Ankündigung

Einklappen
Keine Ankündigung bisher.

Encoder selberschreiben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Encoder selberschreiben

    Hallo,

    ich will mir einen eigen Encoder schreiben. Er muss nicht wirklich sicher sein, sondern nur etwas das Lesen des Codes erschweren.
    Kann man sich eine php extension schreiben, die mcrypt nutzt? Denn soweit ich weiß kann man damit encode und decoden mit Passwort. Und das Passwort würde ich dann in die *.so bzw. *.dll einkompilieren. Ist das schwer zu realisieren?!
    http://www.microcode.de/ Nutzt ja anscheind dieses Verfahren...

    LG Max

  • #2
    Ok anders gefragt. Warum funktionieren manche Script bzw. Extensions nicht mehr, wenn neue php Versionen rauskommen? Wo und was ändert sich immer. Und wo kann man das nachlesen, was sich ändert, so das man das dann anpassen kann!

    Kommentar


    • #3
      Beschreibungen zu Änderungen werden im Changelog notiert.
      http://www.php.net/ChangeLog-4.php
      http://www.php.net/ChangeLog-5.php

      Extensions: http://www.phpfriend.de/forum/ftopic48417.html

      Kommentar


      • #4
        Also weil sich manche Funktionen ändern bzw. gelöscht werden, gehe manche Script mit zunehmender php version nicht?!
        Kann ich ein Extension schreiben, dass für php 5 ausgelegt ist und wovon ist ausgehen kann, dass es dann auf bei php 4.3.xx läuft?

        ###Edit###

        Muss ein Extension anders aufgebaut sein, wenn es dynamisch reingeladen wird?!

        Kommentar


        • #5
          Muss ein Extension anders aufgebaut sein, wenn es dynamisch reingeladen wird?!
          Nein, das regeln die Helferskripte. Zum einen ext_skel für das Grundgerüstst. Und zum anderen die Konfigurationsskripte beim Erstellen von php (samt Modulen).

          Kann ich ein Extension schreiben, dass für php 5 ausgelegt ist und wovon ist ausgehen kann, dass es dann auf bei php 4.3.xx läuft?
          Wenn die Erweiterung etwas benutzt, dass es bei 4.3 noch nicht gab (oder anders lief), dann wird sie sich nicht übersetzen lassen. Beliebig

          Binärmodule und php Kern austauschen kannst Du jedenfalls nicht. Module für php5 kannst Du nicht bei php4 einbinden. Aber es ist durchaus möglich, das der eigentliche Quellcode nicht geändert sondern nur neu übersetzt werden muss.

          http://www.zend.com/php/internals/ex...n-writing1.php

          Kommentar


          • #6
            Extensions sollten normalerweise mit mindestens einer PHP-API laufen, die von der Minor Version von PHP abhängt, also der Zahl hinter dem Komma.
            PHP 4.3 und 4.4 haben also unterschiedliche PHP-APIs.
            mod = master of disaster

            Kommentar


            • #7
              Ausgerechnet Module API 20020429 war von php 4.2.1 bis 4.4.0 gültig

              Kommentar


              • #8
                Dieses MicroCode Projekt ist ja leider eingeschlafen. Wenn ich das jetzt weiterführen will, wie bekomm ich raus, warum es nicht mit neueren php-Versionen läuft. es soll anscheint mit php 4.3.1 noch laufen aber mit 4.3.2 nicht mehr...

                Gibt es irgendwo einen fehlermeldung. Denn bei mir friert apache einfach ein...

                Kommentar


                • #9
                  Hast Du Dir das irgendwo als fertiges (binär) Modul heruntergeladen oder aus den Quellen für Deine php Version erstellt?

                  Kommentar


                  • #10
                    ich hab den kompiliert... unter www.microcode.de bekommt man den quellcode! Aber da es mir zu müssig ist mich darein zu lesen schreib ich einen eigenen...

                    Gibt es sowas wie eine eval funktion? Also in den Extensions... denn wenn ich den Code verschlüssel und wieder entschlüssel muss ich ihn ja auch zum laufen bringen!

                    Kommentar


                    • #11
                      Schau Dir doch an, wie Microcode das gemacht hat.

                      Kommentar


                      • #12
                        Also in einer eval.c (ich denke mal das die das ist) gibt es sowas. Aber damit kann ich überhaupt nix anfangen, weil ich nicht weiß was die macht...

                        Kann man nicht irgendwo nachschauen wo es bei dem Code harckt? Denn beim Kompilieren hat es keine Probleme gegeben...
                        Code:
                        /*
                           +----------------------------------------------------------------------+
                           | Zend Engine                                                          |
                           +----------------------------------------------------------------------+
                           | Copyright (c) 1998-2001 Zend Technologies Ltd. (http://www.zend.com) |
                           +----------------------------------------------------------------------+
                           | This source file is subject to version 0.92 of the Zend license,     |
                           | that is bundled with this package in the file LICENSE, and is        | 
                           | available at through the world-wide-web at                           |
                           | http://www.zend.com/license/0_92.txt.                                |
                           | If you did not receive a copy of the Zend license and are unable to  |
                           | obtain it through the world-wide-web, please send a note to          |
                           | license@zend.com so we can mail you a copy immediately.              |
                           +----------------------------------------------------------------------+
                           | Authors: Andi Gutmans <andi@zend.com>                                |
                           |          Zeev Suraski <zeev@zend.com>                                |
                           +----------------------------------------------------------------------+
                        */
                        #include "zend.h"
                        #include "zend_compile.h"
                        #include "zend_execute.h"
                        #include "zend_API.h"
                        #include "zend_ptr_stack.h"
                        #include "zend_constants.h"
                        #include "zend_extensions.h"
                        #ifdef HAVE_SYS_TIME_H
                        #include <sys/time.h>
                        #endif
                        
                        
                        #include <stdio.h>
                        #include <signal.h>
                        
                        #ifndef _WIN32
                        ZEND_API 
                        #endif
                        int databay_eval_string(char *str, zval *retval_ptr, char *string_name TSRMLS_DC)
                        {
                                zval pv;
                                zend_op_array *new_op_array;
                                zend_op_array *original_active_op_array = EG(active_op_array);
                                zend_function_state *original_function_state_ptr = EG(function_state_ptr);
                                int original_handle_op_arrays;
                                int retval;
                        
                                if (retval_ptr) {
                                        pv.value.str.len = strlen(str)+sizeof("return  ;")-1;
                                        pv.value.str.val = emalloc(pv.value.str.len+1);
                                        strcpy(pv.value.str.val, "return ");
                                        strcat(pv.value.str.val, str);
                                        strcat(pv.value.str.val, " ;");
                                } else {
                                        pv.value.str.len = strlen(str);
                                        pv.value.str.val = estrndup(str, pv.value.str.len);
                                }
                                pv.type = IS_STRING;
                        
                                /*printf("Evaluating '%s'\n", pv.value.str.val);*/
                                original_handle_op_arrays = CG(handle_op_arrays);
                                CG(handle_op_arrays) = 0;
                                new_op_array = compile_string(&pv, string_name TSRMLS_CC);
                                CG(handle_op_arrays) = original_handle_op_arrays;
                        
                                if (new_op_array) {
                                        zval *local_retval_ptr=NULL;
                                        zval **original_return_value_ptr_ptr = EG(return_value_ptr_ptr);
                                        zend_op **original_opline_ptr = EG(opline_ptr);
                                        
                                        EG(return_value_ptr_ptr) = &local_retval_ptr;
                                        EG(active_op_array) = new_op_array;
                                        EG(no_extensions)=1;
                        
                                        zend_execute(new_op_array TSRMLS_CC);
                        
                                        if (local_retval_ptr) {
                                                if (retval_ptr) {
                        			  COPY_PZVAL_TO_ZVAL(*retval_ptr, local_retval_ptr);
                                                } else {
                                                        zval_ptr_dtor(&local_retval_ptr);
                                                }
                                        } else {
                                                if (retval_ptr) {
                                                        INIT_ZVAL(*retval_ptr);
                                                }
                                        }
                        
                                        EG(no_extensions)=0;
                                        EG(opline_ptr) = original_opline_ptr;
                                        EG(active_op_array) = original_active_op_array;
                                        EG(function_state_ptr) = original_function_state_ptr;
                                        destroy_op_array(new_op_array);
                                        efree(new_op_array);
                                        EG(return_value_ptr_ptr) = original_return_value_ptr_ptr;
                                        retval = SUCCESS;
                                } else {
                                        retval = FAILURE;
                                }
                                zval_dtor(&pv);
                                return retval;
                        }

                        Kommentar

                        Lädt...
                        X