Bonjour,

Il y a quelques jours, j'ai vu ce post sur un forum de cracking et j'ai voulu essayer de le renverser, mais mes compétences techniques sont insuffisantes pour le restaurer. Je voudrais demander des conseils aux experts.

Le contenu suivant provient de 52pojie, et c'est purement pour la recherche d'algorithmes de décryptage !

Idée de base :

1. Utiliser un analyseur PHP pour analyser le code PHP en un Abstract Syntax Tree (AST).
2. Parcourir progressivement l'AST et modifier les nœuds selon des règles prédéfinies.
3. Modifier les noms de variables et de fonctions.
4. Inclure des appels de chaînes de caractères en ligne.
5. Fusionner les chaînes de caractères.
6. Supprimer le code inutile.
7. Formater le code.
8. Régénérer le code PHP à partir de l'AST modifié.
9. Dé-obfusquer la sortie du code PHP.

Le point clé est d'analyser l'AST et de définir les règles pour modifier l'AST.

C'est l'idée, mais pour une restauration en batch, je n'ai vu aucune bibliothèque pour cela, et il n'y a pas de méthode directe pour le résoudre. J'ai essayé des outils d'IA, mais peut-être à cause de la façon dont j'ai posé la question, ils n'ont pas fourni la solution correspondante.

Avant encryption :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?php
namespace app\api\controller\v6;
class Update extends Base
{
    public function Index()
    {
        require_once 'apk/v16.php';
        $vsdata = get_url_up();
        $data = array('code' => $vsdata['code'], 'msg' => 'success', 'url' => $vsdata['url']);
        die(json_encode($data));
    }
}
Après encryption :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
namespace app\api\controller\v6;
 
if (!defined("A_AA_AAAAAA_AAA__")) {
    define("A_AA_AAAAAA_AAA__", "A_AA_AAAAAA_AAA_A");
}
$GLOBALS[A_AA_AAAAAA_AAA__] = explode("|E|`|k", "H*|E|`|k415F41415F4141414141415F5F4141415F");
if (!defined("A_AA_AAAAAA_A___A")) {
    define("A_AA_AAAAAA_A___A", "A_AA_AAAAAA_A__A_");
}
$GLOBALS[A_AA_AAAAAA_A___A] = explode("|r|y||", "H*|r|y||61706B2F7631362E706870|r|y||636F6465|r|y||6D7367|r|y||73756363657373|r|y||75726C");
if (!defined(pack($GLOBALS[A_AA_AAAAAA_AAA__][0], $GLOBALS[A_AA_AAAAAA_AAA__][1]))) {
    define(pack($GLOBALS[A_AA_AAAAAA_AAA__][0], $GLOBALS[A_AA_AAAAAA_AAA__][1]), ord(63));
}
$C3zBuEt1402 = array();
$C3zBuEt1402[] = 16;
$C3zBuEt1402[] = 8;
$C3zBuEt1402[] = 9;
$C3zBuEt1402[] = 10;
$C3zBuEt1402[] = 17;
class Update extends Base
{
    public function Index()
    {
        $C3zBuEt1403 = array();
        $C3zBuEt1403[] = 4;
        $C3zBuEt1403[] = 20;
        $C3zBuEt1403[] = 3;
        $C3zBuEt1403[] = 14;
        $C3zBuEt1403[] = 11;
        $A_AA_AAAAAA_A__AA = "pack";
        $C3zeF8H = $A_AA_AAAAAA_A__AA($GLOBALS[A_AA_AAAAAA_A___A][00], $GLOBALS[A_AA_AAAAAA_A___A][01]);
        $C3z8H = (require_once $C3zeF8H);
        unset($C3ztI8H);
        $C3ztI8H = get_url_up();
        $vsdata = $C3ztI8H;
        $A_AA_AAAAAA_A_A__ = "pack";
        $C3zeFvP8H = $A_AA_AAAAAA_A_A__($GLOBALS[A_AA_AAAAAA_A___A][00], $GLOBALS[A_AA_AAAAAA_A___A][02]);
        $A_AA_AAAAAA_A_A_A = "pack";
        $C3zeFvPvP8I = $A_AA_AAAAAA_A_A_A($GLOBALS[A_AA_AAAAAA_A___A][00], $GLOBALS[A_AA_AAAAAA_A___A][02]);
        $A_AA_AAAAAA_A_AA_ = "pack";
        $C3zeFvP8J = $A_AA_AAAAAA_A_AA_($GLOBALS[A_AA_AAAAAA_A___A][00], $GLOBALS[A_AA_AAAAAA_A___A][3]);
        $A_AA_AAAAAA_A_AAA = "pack";
        $C3zeFvP8K = $A_AA_AAAAAA_A_AAA($GLOBALS[A_AA_AAAAAA_A___A][00], $GLOBALS[A_AA_AAAAAA_A___A][4]);
        $A_AA_AAAAAA_AA___ = "pack";
        $C3zeFvP8L = $A_AA_AAAAAA_AA___($GLOBALS[A_AA_AAAAAA_A___A][00], $GLOBALS[A_AA_AAAAAA_A___A][05]);
        $A_AA_AAAAAA_AA__A = "pack";
        $C3zeFvPvP8M = $A_AA_AAAAAA_AA__A($GLOBALS[A_AA_AAAAAA_A___A][00], $GLOBALS[A_AA_AAAAAA_A___A][05]);
        $C3zzA8N = array();
        $C3zzA8N[$C3zeFvP8H] = $vsdata[$C3zeFvPvP8I];
        $C3zzA8N[$C3zeFvP8J] = $C3zeFvP8K;
        $C3zzA8N[$C3zeFvP8L] = $vsdata[$C3zeFvPvP8M];
        unset($C3ztI8H);
        $C3ztI8H = $C3zzA8N;
        $data = $C3ztI8H;
        die(json_encode($data));
    }
}