obfuscated of encoded PHP bestand herstellen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • efan
  • Registratie: Januari 2001
  • Niet online
ik zit met een script, wat na op google gezocht te hebben, obfuscated(?) lijkt te zijn. Ik zie bijv. producten als ZenGuard voorbij komen om dit te doen. Echter zou ik graag wat meer zekerheid willen hebben of dit inderdaad door bijv. ZenGuard komt of door een ander product; en uiteraard hoe ik dit vervolgens kan converteren naar beter leesbare code.

Hieronder een stukje voorbeeldcode:

code:
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
function elnlcjcnp ($elnlcgpSU)
  {
    $elnlcwpyy = array ();
    if (preg_match ('/\\[default\\](.*?)\\[\\/default\\]/', $elnlcgpSU, $elnlcwpyy))
    {
      $elnlcgpSU = $elnlcwpyy[1];
    }

    return $elnlcgpSU;
  }

  function elnlcqjmoo ($elnlcgpSU, $elnlcrsPJ, $d)
  {
    global $elnlcMVquv;
    $elnlcGryvK = ($elnlcgpSU + 48273) % $elnlcrsPJ;
    $elnlcxLrC = $elnlcMVquv['elnlcvCqE'];
    $elnlclTaO = $elnlcGryvK;
    while ($elnlcxLrC == 0)
    {
      if ($d[$elnlcGryvK] != -1)
      {
        ++$elnlcGryvK;
        if ($elnlcGryvK == $elnlcrsPJ)
        {
          $elnlcGryvK = $elnlcMVquv['elnlcvCqE'];
          continue;
        }

        continue;
      }

      $elnlcxLrC = $elnlcMVquv['elnlczUlK'];
    }

    return $elnlcGryvK;
  }



Wie herkent dit, en kan mij vertellen hoe ik dit beter leesbaar kan maken?

Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Nu online

DexterDee

I doubt, therefore I might be

Zend Guard of IonCube obfuscaten geen code, maar encrypten het. Het resultaat is dat deze source bestanden in z'n geheel niet meer leesbaar zijn en niet uitvoerbaar zonder de Zend Guard of IonCube PHP extensie.

Dit bestand is niet gemaakt met Zend Guard of IonCube. Er lijkt hier sprake van een vrij simpele obfuscator die methodnamen en variabelen scrambelt. Of je het leesbaarder kan maken hangt af van het scramble algoritme. Het lijkt op iets als ROT-13, maar dat is het niet (geprobeerd, komt niks zinnigs uit). Als het scramblen bestaat uit het vervangen van functie en variabele namen door random strings, dan is het proces niet omkeerbaar.

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

met find replace kun je het beter leesbaar maken

code:
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
function functie1 ($argument)
  {
    $waarde1 = array ();
    if (preg_match ('/\[default\\](.*?)\[\\/default\\]/', $argument, $waarde1))
    {
      $argument = $waarde1[1];
    }

    return $argument;
  }

  function functie2 ($argument, $waarde4, $d)
  {
    global $waarde2;
    $waarde3 = ($argument + 48273) % $waarde4;
    $waarde5 = $waarde2['elnlcvCqE'];
    $elnlclTaO = $waarde3;
    while ($waarde5 == 0)
    {
      if ($d[$waarde3] != -1)
      {
        ++$waarde3;
        if ($waarde3 == $waarde4)
        {
          $waarde3 = $waarde2['elnlcvCqE'];
          continue;
        }

        continue;
      }

      $waarde5 = $waarde2['elnlczUlK'];
    }

    return $waarde3;
  }

Iperf


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:10
Inderdaad, gewoon search/replace zoals fish doet. Je kunt sowieso de parameternamen van functies gebruiken om zinnige identifiers te maken. Het prototype van preg_match is bijvoorbeeld preg_match($pattern, $subject $matches ... ) dus zou ik $waarde1 al direct $matches noemen.

Verder kun je regel 17 wel verwijderen. :P

Acties:
  • 0 Henk 'm!

  • efan
  • Registratie: Januari 2001
  • Niet online
fish schreef op vrijdag 13 april 2012 @ 21:24:
met find replace kun je het beter leesbaar maken

code:
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
function functie1 ($argument)
  {
    $waarde1 = array ();
    if (preg_match ('/\[default\\](.*?)\[\\/default\\]/', $argument, $waarde1))
    {
      $argument = $waarde1[1];
    }

    return $argument;
  }

  function functie2 ($argument, $waarde4, $d)
  {
    global $waarde2;
    $waarde3 = ($argument + 48273) % $waarde4;
    $waarde5 = $waarde2['elnlcvCqE'];
    $elnlclTaO = $waarde3;
    while ($waarde5 == 0)
    {
      if ($d[$waarde3] != -1)
      {
        ++$waarde3;
        if ($waarde3 == $waarde4)
        {
          $waarde3 = $waarde2['elnlcvCqE'];
          continue;
        }

        continue;
      }

      $waarde5 = $waarde2['elnlczUlK'];
    }

    return $waarde3;
  }
kan inderdaad ook nog iets helpen, echter de php file is enorm(!) groot.
ik weet wel dat er smarty templates/compiler in gebruikt wordt ( http://www.smarty.net/docsv2/en/ ). Zou die voor die vreemde namen kunnen zorgen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ido schreef op vrijdag 13 april 2012 @ 21:33:
ik weet wel dat er smarty templates/compiler in gebruikt wordt ( http://www.smarty.net/docsv2/en/ ). Zou die voor die vreemde namen kunnen zorgen?
Nee. Smarty "compiled" wel z'n templates (wat je hier post zijn gewoon functies, geen templates). Maar dit is gewoon (relatief eenvoudig) obfuscated code. Live with it. Even door de zure appel of proberen aan 't origineel te geraken. Zoiets wordt natuurlijk niet zomaar gedaan dus de vraag is of je überhaupt recht hebt op de code volgens de eigenaar/maker.

[ Voor 16% gewijzigd door RobIII op 13-04-2012 21:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1