|
You last visited: Today at 21:34
Advertisement
DecompileMe
Discussion on DecompileMe within the AutoIt forum part of the Coders Den category.
08/14/2011, 15:09
|
#31
|
elite*gold: 35
Join Date: Apr 2011
Posts: 800
Received Thanks: 214
|
Quote:
Originally Posted by Slait
Ich habs auch mal versucht, kam aber leider nicht so viel raus.
Als allererstes natürlich entpacken(UPX).
Dann mit nem stinknormalen AutoIt decompiler --> nix gebracht.
Dann Programm debugen und C bzw. Assembler Code versuchen zu bekommen:
Was raus kam(main-Methode)
PHP Code:
int main(int argc m[r28 + 4], char ** argv m[r28 + 8], char ** envp m[r28 + 12]) { r28, r24 } parameters: end parameters Twoway BB: 0040d7f0 0 *32* r28 := r28 - 4 0 *32* m[r28] := r29 0040d7f1 0 *32* r29 := r28 0040d7f3 0 *32* r28 := r28 & -8 0 *v* %flags := LOGICALFLAGS32( r28 ) 0040d7f6 0 *32* r24 := m[0x4a939c] 0040d7fb 0 *32* tmp1 := r28 0 *32* r28 := r28 - 44 0 *v* %flags := SUBFLAGS32( tmp1, 44, r28 ) 0040d7fe 0 *32* r28 := r28 - 4 0 *32* m[r28] := r27 0040d7ff 0 *32* r27 := 0 0 *v* %flags := LOGICALFLAGS32( r27 ) 0040d801 0 *32* r28 := r28 - 4 0 *32* m[r28] := r30 0040d802 0 *32* r28 := r28 - 4 0 *32* m[r28] := r31 0040d803 0 *8* tmpb := m[r24 + 29] - r11 0 *v* %flags := SUBFLAGS8( m[r24 + 29], r11, tmpb ) 0040d806 0 BRANCH 0x431bcb, condition equals High level: %flags L1: Oneway BB: 00431bcb 0 *32* r24 := 1 00431bd0 0 GOTO 0x40d8e8 Call BB: 0040d80c 0 *32* r25 := m[r29 + 8] 0040d80f 0 *32* r31 := 1 0040d814 0 *32* r30 := r28 + 24 0040d818 0 *32* m[0x4972c8] := r25 0040d81e 0 *32* m[0x49729c] := r27 0040d824 0 *32* m[0x497298] := r27 0040d82a 0 *32* m[r28 + 24] := r27 0040d82e 0 *32* m[r28 + 32] := r31 0040d832 0 *32* m[r28 + 36] := r27 0040d836 0 *32* m[r28 + 40] := r27 0040d83a 0 *32* m[r28 + 48] := r31 0040d83e 0 *32* m[r28 + 52] := r27 0040d842 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc - 0x457d 0 CALL proc1( ) Reaching definitions: Live variables: Call BB: 0040d847 0 *32* r26 := r28 + 40 0040d84b 0 *32* r30 := r28 + 12 0040d84f 0 *32* m[r28 + 32] := 6 0040d857 0 *32* m[r28 + 24] := r26 0040d85b 0 *32* m[r28 + 12] := r27 0040d85f 0 *32* m[r28 + 20] := r27 0040d863 0 *32* m[0x4972c4] := r27 0040d869 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc + 0x12ec 0 CALL proc2( ) Reaching definitions: Live variables: Twoway BB: 0040d86e 0 *8* tmpb := r8 0 *v* %flags := LOGICALFLAGS8( tmpb ) 0040d870 0 BRANCH 0x40d87e, condition equals High level: %flags L2: Call BB: 0040d87e 0 *32* r28 := r28 - 4 0 *32* m[r28] := 0x439514 0040d883 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc + 0x4248 0 CALL proc4( ) Reaching definitions: Live variables: Call BB: 0040d872 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc + 0x1333 0 CALL proc3( ) Reaching definitions: Live variables: Computed call BB: 0040d877 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := r24 0 CALL r24( ) Reaching definitions: Live variables: Fall BB: 0040d879 0 *32* m[0x4972c4] := r24 Call BB: 0040d888 0 *32* tmp1 := r28 0 *32* r28 := r28 + 4 0 *v* %flags := ADDFLAGS32( tmp1, 4, r28 ) 0040d88b 0 *32* r28 := r28 - 4 0 *32* m[r28] := r31 0040d88c 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc + 0x429d 0 CALL proc5( ) Reaching definitions: Live variables: Call BB: 0040d891 0 *32* r24 := m[0x4a93a0] 0040d896 0 *32* tmp1 := r28 0 *32* r28 := r28 + 4 0 *v* %flags := ADDFLAGS32( tmp1, 4, r28 ) 0040d899 0 *32* r28 := r28 - 4 0 *32* m[r28] := r24 0040d89a 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc + 0x1adb 0 CALL proc6( ) Reaching definitions: Live variables: Call BB: 0040d89f 0 *32* r24 := m[r29 + 16] 0040d8a2 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc - 461 0 CALL proc7( ) Reaching definitions: Live variables: Call BB: 0040d8a7 0 *32* r25 := m[0x4a93a0] 0040d8ad 0 *32* r26 := m[r25 + 4] 0040d8b0 0 *32* r28 := r28 - 4 0 *32* m[r28] := 2 0040d8b2 0 *32* r28 := r28 - 4 0 *32* m[r28] := r26 0040d8b3 0 *32* r28 := r28 - 4 0 *32* m[r28] := r27 0040d8b4 0 *32* r28 := r28 - 4 0 *32* m[r28] := 0x2001 0040d8b9 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := m[0x4825ac] 0 CALL SystemParametersInfoW( ) Reaching definitions: Live variables: Twoway BB: 0040d8bf 0 *32* r24 := m[r28 + 12] 0040d8c3 0 *32* r31 := m[0x49729c] 0040d8c9 0 *32* tmp1 := r24 - r27 0 *v* %flags := SUBFLAGS32( r24, r27, tmp1 ) 0040d8cb 0 BRANCH 0x40d8d4, condition equals High level: %flags L3: Call BB: 0040d8d4 0 *32* r30 := r28 + 40 0040d8d8 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc - 0x4613 0 CALL proc1( ) Reaching definitions: Live variables: Call BB: 0040d8cd 0 *32* r28 := r28 - 4 0 *32* m[r28] := r24 0040d8ce 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := m[0x482318] 0 CALL FreeLibrary( ) Reaching definitions: Live variables: Call BB: 0040d8dd 0 *32* r30 := r28 + 24 0040d8e1 0 *32* r28 := r28 - 4 0 *32* m[r28] := %pc 0 *32* %pc := %pc - 0x461c 0 CALL proc1( ) Reaching definitions: Live variables: Fall BB: 0040d8e6 0 *32* r24 := r31 L4: Ret BB: 0040d8e8 0 *32* r31 := m[r28] 0 *32* r28 := r28 + 4 0040d8e9 0 *32* r30 := m[r28] 0 *32* r28 := r28 + 4 0040d8ea 0 *32* r27 := m[r28] 0 *32* r28 := r28 + 4 0040d8eb 0 *32* r28 := r29 0040d8ed 0 *32* r29 := m[r28] 0 *32* r28 := r28 + 4 0040d8ee 0 *32* %pc := m[r28] 0 *32* r28 := r28 + 20 0 RET
Auch nicht wirklich ein vorzeigbares Ergebnis.
Dann nochmal mit nem HEX-Editor öffnen und den Header(daran scheitert wohl der decompiler) mit demjenigen einer normalen AutoIt-Datei zu vergleichen --> fehlgeschlagen, da anscheinend der komplette Header die Position geändert hat, und ich nicht der Profi in Assembler bin.
Fazit: nicht geschafft
Es gibt hier noch viel erfahrenere Leute, frag mal zB Mods aus der Coding-Section die haben da mehr Chancen.
|
Bei V1 gibts keinen Header (glaube ich) ich habs so versucht
UPX ---> Hex-Editor --> Header an der vermuteten Positsion eingefügt ---> dan fehlte noch sowas wie AU3!EA06 am anfang und ende des teils nach dem Header also die reingekloppt ---> versucht zu Decompilen ---> FAIL ( iwas mit Passwort )
€: ich weiss nicht an welcher version du dich versucht hast
|
|
|
08/14/2011, 15:26
|
#32
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by Creeper-Man
Bei V1 gibts keinen Header (glaube ich) ich habs so versucht
UPX ---> Hex-Editor --> Header an der vermuteten Positsion eingefügt ---> dan fehlte noch sowas wie AU3!EA06 am anfang und ende des teils nach dem Header also die reingekloppt ---> versucht zu Decompilen ---> FAIL ( iwas mit Passwort )
€: ich weiss nicht an welcher version du dich versucht hast 
|
So wie ich das vermute wird die Verschlüsselungsroutine des Compilers geändert oder zumindest erweitert.
Da dürftet ihr wohl nicht viel machen können mit nem einfachen Decompiler.
Aber ihr könnt Olly nehmen, das "IsDebuggerPresent" rausnehmen.
Einen BreakPoint auf "readfile" setzen und dann Memory dumpen. Dann bekommt ihr den entschlüsselten AutoIt-Code Zeile für Zeile.
Ich bin nur grade zu faul nach einem passenden Unpacker zu suchen.
Wenn jemand viel Zeit und Lust hat, kann er das ja machen.
|
|
|
08/14/2011, 16:40
|
#33
|
elite*gold: 725
Join Date: Sep 2009
Posts: 1,432
Received Thanks: 1,911
|
@Shadow
Ich bitte dich das rauszunehmen da sonst jedes kiddie, mit Camo verschlüsselte Programme dekompilieren kann.
Naja ich weiß ja jetzt wie sicher mein Script ist. (Profis z.B Shadow können fast jedes AutoIt Script dekompilieren)
#closerequest
|
|
|
08/17/2011, 00:36
|
#34
|
elite*gold: 0
Join Date: Jul 2011
Posts: 13
Received Thanks: 0
|
ich bin auch für das entfernen dieser information!
war ja klar das irgendwann hier einer ankommt und mit nicht selbstgemachter protection angibt... ganz toll gemacht!
|
|
|
08/17/2011, 11:33
|
#35
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by Frennzy
ich bin auch für das entfernen dieser information!
war ja klar das irgendwann hier einer ankommt und mit nicht selbstgemachter protection angibt... ganz toll gemacht!
|
Diese Informationen werden hauptsächlich zum Viren finden benutzt.
Und wenn jemand auffordert, dass die Leute einen Weg finden sollen einen Schutz zu knacken, dann machen das die Leute auch.
Wenn der Schutz dann nicht von ihnen selbst erstellt wurde...
Scheiße gelaufen, darüber hätte man sich früher Gedanken machen sollen.
|
|
|
09/12/2011, 17:50
|
#36
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Kleine Frage:
Ich habe mir AutoIt gestern mal heruntergeladen und es sah so aus, als läge der Quelltext nur in Tokens vor.
Sprichst du also von einer anderen Version oder was genau meinst du mit
Einen BreakPoint auf "readfile" setzen und dann Memory dumpen ?
|
|
|
All times are GMT +1. The time now is 21:35.
|
|