實戰Armadillo V3.60標準加殼方式的脫殼――WinXP的Notepad
實戰Armadillo V3.60標準加殼方式的脫殼――WinXP的Notepad
現在, Armadillo3.6的脫殼文章還沒有,所以昨晚小妹閒著沒事,便用Armadillo V3.60專業版加了記事本的殼(XP)。想試試3.6的殼有無不同之處,脫下來,總體感覺標準版的殼和3.4的差不多,所以主要方法還是採用以前那些作者的方法,不同之處,我加以說明。但COPYMEM2的方式應該有了變化,目前正在研究中。
【除錯環境】:WinXP、Ollydbg1.10b、PEiD、LordPE、ImportREC
宣告,小妹用自己的本本除錯的,迅馳CPU1.4G,各位一除錯若有其它異常問題請指明,因為本本上除錯偶爾會出現一些莫名錯誤。
【脫殼過程】:
首選用IsDebug 1.4外掛去掉Ollydbg的偵錯程式標誌。設定忽略所有的異常選項。
0103A000 > 60 PUSHAD
====>進入OD後斷在這!
今天我不用BP GetModuleHandleA的方法,因為在我機上總是返回不到一個有效的地方,所以這裡小妹用BP VirtualProtect,雖然按鍵的次數多一點,但不失為一種穩妥的方法。
在OD的命令列上鍵入BP VirtualProtect,回車,(注意大小寫)。沒有任何反應就說明正常。
OK,現在我們先來找OEP。F9一下。出現異常,按兩次shit+f9過去。然後斷下。接下來就一直按F9吧,按了5次F9,會出現一個對話方塊,告知在某個地址出錯,不知如何繞過。這時點選對話方塊中的確定按鈕。然後按shift+f9越過(其實這是一個AM的未註冊程式的提示框,在3.4中,五次下來也會出現異常,但不會停止下來。其實留意一下堆疊,可以看到基地址的資訊,因為後面上要加密IAT了),再按f9,共按了33次,程式就執行了,所以為了找到oep,我們可以少按一次,也就是37次,這樣程式便不會執行,我們就可以一步一步跟蹤到oep了。呵呵。好,重頭再來一次,做法和前面的一樣,共按37次F9,
取消斷點,按ctrl+f9,執行到返回。如下:
00AD3462 5E POP ESI ; kernel32.VirtualProtect
00AD3463 5F POP EDI
00AD3464 5B POP EBX
00AD3465 C9 LEAVE
00AD3466 C3 RETN
可以按F8一步一步過。然後到如下:
00AD264D A1 6C5AAE00 MOV EAX,DWORD PTR DS:[AE5A6C]
00AD2652 8A80 82370000 MOV AL,BYTE PTR DS:[EAX+3782]
00AD2658 8885 E8D1FFFF MOV BYTE PTR SS:[EBP-2E18],AL
00AD265E 0FB685 E8D1FFFF MOVZX EAX,BYTE PTR SS:[EBP-2E18]
00AD2665 85C0 TEST EAX,EAX
00AD2667 74 6C JE SHORT 00AD26D5
00AD2669 8D85 3CD4FFFF LEA EAX,DWORD PTR SS:[EBP-2BC4]
00AD266F 50 PUSH EAX
00AD2670 6A 01 PUSH 1
00AD2672 FFB5 E0FEFFFF PUSH DWORD PTR SS:[EBP-120]
00AD2678 8B85 1CEBFFFF MOV EAX,DWORD PTR SS:[EBP-14E4]
00AD267E 0385 B8FDFFFF ADD EAX,DWORD PTR SS:[EBP-248]
00AD2684 50 PUSH EAX
00AD2685 FF15 3481AD00 CALL DWORD PTR DS:[AD8134] ; kernel32.VirtualProtect
00AD268B C785 40D4FFFF 9>MOV DWORD PTR SS:[EBP-2BC0],94
00AD2695 8D85 40D4FFFF LEA EAX,DWORD PTR SS:[EBP-2BC0]
00AD269B 50 PUSH EAX
00AD269C FF15 C080AD00 CALL DWORD PTR DS:[AD80C0] ; kernel32.GetVersionExA
00AD26A2 83BD 50D4FFFF 0>CMP DWORD PTR SS:[EBP-2BB0],2
00AD26A9 75 2A JNZ SHORT 00AD26D5
00AD26AB 8D85 3CD4FFFF LEA EAX,DWORD PTR SS:[EBP-2BC4]
00AD26B1 50 PUSH EAX
00AD26B2 8B85 3CD4FFFF MOV EAX,DWORD PTR SS:[EBP-2BC4]
00AD26B8 80CC 01 OR AH,1
00AD26BB 50 PUSH EAX
00AD26BC FFB5 E0FEFFFF PUSH DWORD PTR SS:[EBP-120]
00AD26C2 8B85 1CEBFFFF MOV EAX,DWORD PTR SS:[EBP-14E4]
00AD26C8 0385 B8FDFFFF ADD EAX,DWORD PTR SS:[EBP-248]
00AD26CE 50 PUSH EAX
00AD26CF FF15 3481AD00 CALL DWORD PTR DS:[AD8134] ; kernel32.VirtualProtect
00AD26D5 EB 03 JMP SHORT 00AD26DA
00AD26D7 D6 SALC
00AD26D8 D6 SALC
00AD26D9 8DA1 EC4FAE00 LEA ESP,DWORD PTR DS:[ECX+AE4FEC]
00AD26DF 8985 38D4FFFF MOV DWORD PTR SS:[EBP-2BC8],EAX
00AD26E5 83BD 38D4FFFF 0>CMP DWORD PTR SS:[EBP-2BC8],0
00AD26EC 74 36 JE SHORT 00AD2724
00AD26EE 8B85 38D4FFFF MOV EAX,DWORD PTR SS:[EBP-2BC8]
00AD26F4 8338 00 CMP DWORD PTR DS:[EAX],0
00AD26F7 74 2B JE SHORT 00AD2724
00AD26F9 8B85 38D4FFFF MOV EAX,DWORD PTR SS:[EBP-2BC8]
00AD26FF 8B00 MOV EAX,DWORD PTR DS:[EAX]
00AD2701 8B00 MOV EAX,DWORD PTR DS:[EAX]
00AD2703 2B05 5C5AAE00 SUB EAX,DWORD PTR DS:[AE5A5C]
00AD2709 8B8D 38D4FFFF MOV ECX,DWORD PTR SS:[EBP-2BC8]
00AD270F 8B09 MOV ECX,DWORD PTR DS:[ECX]
00AD2711 8901 MOV DWORD PTR DS:[ECX],EAX
00AD2713 8B85 38D4FFFF MOV EAX,DWORD PTR SS:[EBP-2BC8]
00AD2719 83C0 04 ADD EAX,4
00AD271C 8985 38D4FFFF MOV DWORD PTR SS:[EBP-2BC8],EAX
00AD2722 ^ EB CA JMP SHORT 00AD26EE
00AD2724 6A 01 PUSH 1
00AD2726 FF35 14DEAD00 PUSH DWORD PTR DS:[ADDE14]
00AD272C A1 8C55AE00 MOV EAX,DWORD PTR DS:[AE558C]
00AD2731 0305 14DCAD00 ADD EAX,DWORD PTR DS:[ADDC14]
00AD2737 50 PUSH EAX
00AD2738 FFB5 14EBFFFF PUSH DWORD PTR SS:[EBP-14EC]
00AD273E E8 69EDFDFF CALL 00AB14AC
00AD2743 83C4 10 ADD ESP,10
00AD2746 A1 EC4FAE00 MOV EAX,DWORD PTR DS:[AE4FEC]
00AD274B 8985 34D4FFFF MOV DWORD PTR SS:[EBP-2BCC],EAX
00AD2751 83BD 34D4FFFF 0>CMP DWORD PTR SS:[EBP-2BCC],0
00AD2758 74 36 JE SHORT 00AD2790
00AD275A 8B85 34D4FFFF MOV EAX,DWORD PTR SS:[EBP-2BCC]
00AD2760 8338 00 CMP DWORD PTR DS:[EAX],0
00AD2763 74 2B JE SHORT 00AD2790
00AD2765 8B85 34D4FFFF MOV EAX,DWORD PTR SS:[EBP-2BCC]
00AD276B 8B00 MOV EAX,DWORD PTR DS:[EAX]
00AD276D 8B00 MOV EAX,DWORD PTR DS:[EAX]
00AD276F 0305 5C5AAE00 ADD EAX,DWORD PTR DS:[AE5A5C]
00AD2775 8B8D 34D4FFFF MOV ECX,DWORD PTR SS:[EBP-2BCC]
00AD277B 8B09 MOV ECX,DWORD PTR DS:[ECX]
00AD277D 8901 MOV DWORD PTR DS:[ECX],EAX
00AD277F 8B85 34D4FFFF MOV EAX,DWORD PTR SS:[EBP-2BCC]
00AD2785 83C0 04 ADD EAX,4
00AD2788 8985 34D4FFFF MOV DWORD PTR SS:[EBP-2BCC],EAX
00AD278E ^ EB CA JMP SHORT 00AD275A
00AD2790 68 B851AE00 PUSH 0AE51B8
00AD2795 FF15 8882AD00 CALL DWORD PTR DS:[AD8288] ; ntdll.RtlLeaveCriticalSection
00AD279B C705 DCDBAD00 C>MOV DWORD PTR DS:[ADDBDC],0ADE4C4
00AD27A5 6A 01 PUSH 1
00AD27A7 58 POP EAX
00AD27A8 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
00AD27AB 64:890D 0000000>MOV DWORD PTR FS:[0],ECX
00AD27B2 5F POP EDI
00AD27B3 5E POP ESI
00AD27B4 5B POP EBX
00AD27B5 C9 LEAVE
00AD27B6 C3 RETN
這裡也很簡單,F8一步一步過來就可以了,為了加快速度,可以看到一些jmp是往上跳的,只要將滑鼠定位到jmp下面的行,F4直接過來就可以了,接下來一直F8到如下:
01011C73 33C0 XOR EAX,EAX
01011C75 75 18 JNZ SHORT NOTEPAD.01011C8F
01011C77 7A 0C JPE SHORT NOTEPAD.01011C85
01011C79 70 0E JO SHORT NOTEPAD.01011C89
01011C7B EB 0D JMP SHORT NOTEPAD.01011C8A
01011C7D E8 720E79F1 CALL F27A2AF4
01011C82 FF15 00790974 CALL DWORD PTR DS:[74097900]
01011C88 F0:EB 87 LOCK JMP SHORT NOTEPAD.01011C12 ; 鎖定字首是不允許的
01011C8B DB7A F0 FSTP TBYTE PTR DS:[EDX-10]
01011C8E A0 33618B0D MOV AL,BYTE PTR DS:[D8B6133]
01011C93 64:A1 040151E8 MOV EAX,DWORD PTR FS:[E8510104]
01011C99 B3 E8 MOV BL,0E8
01011C9B FFFF ??? ; 未知命
令
看到這些命令不必緊張,仍然F8,繼續。
一直到如下要注意了:
01011D4D 8BC0 MOV EAX,EAX
01011D4F 6A 00 PUSH 0
01011D51 E8 6E000000 CALL NOTEPAD.01011DC4
01011D56 83C4 04 ADD ESP,4
01011D59 6A 00 PUSH 0
01011D5B E8 FBD40100 CALL NOTEPAD.0102F25B
01011D60 83C4 04 ADD ESP,4
01011D63 837D E4 01 CMP DWORD PTR SS:[EBP-1C],1
01011D67 75 11 JNZ SHORT NOTEPAD.01011D7A
01011D69 68 F0000501 PUSH NOTEPAD.010500F0
01011D6E FF15 14010501 CALL DWORD PTR DS:[1050114] F7進去
01011D74 83C4 04 ADD ESP,4
01011D77 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
01011D7A 68 8C050101 PUSH NOTEPAD.0101058C
01011D7F E8 D7D40100 CALL NOTEPAD.0102F25B
01011D84 83C4 04 ADD ESP,4
01011D6E要進去,不然就飛了,即使你的機上地址和我不一樣也沒關係,看到類似上面的結構注意一下就可以。OK,進去。
00AD44DC A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
00AD44E1 C605 3057AE00 0>MOV BYTE PTR DS:[AE5730],1
00AD44E8 C705 DCDBAD00 F>MOV DWORD PTR DS:[ADDBDC],0ADE6F0 ; ASCII "RA"
00AD44F2 53 PUSH EBX
00AD44F3 8B48 70 MOV ECX,DWORD PTR DS:[EAX+70]
00AD44F6 56 PUSH ESI
00AD44F7 3348 6C XOR ECX,DWORD PTR DS:[EAX+6C]
00AD44FA 57 PUSH EDI
00AD44FB 6A FE PUSH -2
00AD44FD 3348 58 XOR ECX,DWORD PTR DS:[EAX+58]
00AD4500 5B POP EBX
00AD4501 F6C1 40 TEST CL,40
00AD4504 75 08 JNZ SHORT 00AD450E
00AD4506 6A 01 PUSH 1
00AD4508 E8 8609FEFF CALL 00AB4E93
00AD450D 59 POP ECX
00AD450E 8B7424 10 MOV ESI,DWORD PTR SS:[ESP+10]
00AD4512 833E 02 CMP DWORD PTR DS:[ESI],2
00AD4515 75 40 JNZ SHORT 00AD4557
00AD4517 6A 00 PUSH 0
00AD4519 E8 E231FEFF CALL 00AB7700
00AD451E A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
00AD4523 59 POP ECX
00AD4524 8B48 40 MOV ECX,DWORD PTR DS:[EAX+40]
00AD4527 8B50 70 MOV EDX,DWORD PTR DS:[EAX+70]
00AD452A 3348 08 XOR ECX,DWORD PTR DS:[EAX+8]
00AD452D 33CA XOR ECX,EDX
00AD452F 74 14 JE SHORT 00AD4545
00AD4531 8B78 68 MOV EDI,DWORD PTR DS:[EAX+68]
00AD4534 3378 04 XOR EDI,DWORD PTR DS:[EAX+4]
00AD4537 8B46 18 MOV EAX,DWORD PTR DS:[ESI+18]
00AD453A 33FA XOR EDI,EDX
00AD453C 2BC7 SUB EAX,EDI
00AD453E 03C1 ADD EAX,ECX
00AD4540 8946 1C MOV DWORD PTR DS:[ESI+1C],EAX
00AD4543 EB 04 JMP SHORT 00AD4549
00AD4545 8366 1C 00 AND DWORD PTR DS:[ESI+1C],0
00AD4549 FF76 18 PUSH DWORD PTR DS:[ESI+18]
00AD454C E8 908FFEFF CALL 00ABD4E1
00AD4551 59 POP ECX
00AD4552 E9 AC000000 JMP 00AD4603
00AD4557 E8 7918FEFF CALL 00AB5DD5
00AD455C C705 DCDBAD00 E>MOV DWORD PTR DS:[ADDBDC],0ADE6EC ; ASCII "RB"
00AD4566 FF15 1481AD00 CALL DWORD PTR DS:[AD8114] ; kernel32.GetCurrentThreadId
00AD456C A3 AC56AE00 MOV DWORD PTR DS:[AE56AC],EAX
00AD4571 E8 1537FEFF CALL 00AB7C8B
00AD4576 6A 00 PUSH 0
00AD4578 E8 648FFEFF CALL 00ABD4E1
00AD457D 6A 00 PUSH 0
00AD457F C705 DCDBAD00 E>MOV DWORD PTR DS:[ADDBDC],0ADE6E8 ; ASCII "RC"
00AD4589 E8 7231FEFF CALL 00AB7700
00AD458E 59 POP ECX
00AD458F 59 POP ECX
00AD4590 E8 4A11FFFF CALL 00AC56DF
00AD4595 8BF8 MOV EDI,EAX
00AD4597 A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
00AD459C 8B48 70 MOV ECX,DWORD PTR DS:[EAX+70]
00AD459F 3348 40 XOR ECX,DWORD PTR DS:[EAX+40]
00AD45A2 3348 08 XOR ECX,DWORD PTR DS:[EAX+8]
00AD45A5 03F9 ADD EDI,ECX
00AD45A7 8B0E MOV ECX,DWORD PTR DS:[ESI]
00AD45A9 85C9 TEST ECX,ECX
00AD45AB 75 2F JNZ SHORT 00AD45DC
00AD45AD 8B78 70 MOV EDI,DWORD PTR DS:[EAX+70]
00AD45B0 E8 2A11FFFF CALL 00AC56DF
00AD45B5 8B0D 9455AE00 MOV ECX,DWORD PTR DS:[AE5594] ; NOTEPAD.0104A260
00AD45BB FF76 14 PUSH DWORD PTR DS:[ESI+14]
00AD45BE 8B51 40 MOV EDX,DWORD PTR DS:[ECX+40]
00AD45C1 FF76 10 PUSH DWORD PTR DS:[ESI+10]
00AD45C4 3351 08 XOR EDX,DWORD PTR DS:[ECX+8]
00AD45C7 FF76 0C PUSH DWORD PTR DS:[ESI+C]
00AD45CA 33D7 XOR EDX,EDI
00AD45CC 03C2 ADD EAX,EDX
00AD45CE 8B51 68 MOV EDX,DWORD PTR DS:[ECX+68]
00AD45D1 3351 04 XOR EDX,DWORD PTR DS:[ECX+4]
00AD45D4 33D7 XOR EDX,EDI
00AD45D6 2BC2 SUB EAX,EDX
00AD45D8 FFD0 CALL EAX
00AD45DA EB 25 JMP SHORT 00AD4601
00AD45DC 83F9 01 CMP ECX,1
00AD45DF 75 22 JNZ SHORT 00AD4603
00AD45E1 FF76 04 PUSH DWORD PTR DS:[ESI+4]
00AD45E4 FF76 08 PUSH DWORD PTR DS:[ESI+8]
00AD45E7 6A 00 PUSH 0
00AD45E9 E8 F110FFFF CALL 00AC56DF
00AD45EE 50 PUSH EAX
00AD45EF A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
00AD45F4 8B48 70 MOV ECX,DWORD PTR DS:[EAX+70]
00AD45F7 3348 68 XOR ECX,DWORD PTR DS:[EAX+68]
00AD45FA 3348 04 XOR ECX,DWORD PTR DS:[EAX+4]
00AD45FD 2BF9 SUB EDI,ECX
00AD45FF FFD7 CALL EDI DDDDD EDI=OEP=01006ae0
00AD4601 8BD8 MOV EBX,EAX
00AD4603 5F POP EDI
00AD4604 8BC3 MOV EAX,EBX
00AD4606 5E POP ESI
00AD4607 5B POP EBX
00AD4608 C3 RETN
執行到上面的00AD45FF,EDI=oep,F7進去,執行LORDPE,dump一下吧,OK,現在
執行ImportREC1.6(請使用1.6,不要使用1.4) oep填6ae0 OK,提示oep找到了,單擊獲取輸入表,發現有許多函式不認,單擊顯示非法函式,可以看到第一個不認的是:
RVA:00001004 ptr:00ABBA46 (記住這個,一會兒用得著)
這是因為加密的原因,OK,
我們來找到那個加密的地方。
重新來吧。
先用外掛隱藏OD,下BP VirtualProtect斷點,越過開頭兩次異常,按5次F5,點選對話方塊中的確定按鈕,SHIFT+F9越過,OK,看一下堆疊:
0012BEF0 00AD077C /CALL 到 VirtualProtect 來自 00AD0776
0012BEF4 01001000 |Address = NOTEPAD.01001000 DDDD>目標接近了。
0012BEF8 00007000 |Size = 7000 (28672.)
0012BEFC 00000004 |NewProtect = PAGE_READWRITE
0012BF00 0012D71C pOldProtect = 0012D71C
記得第一個出錯指標是01001004(加上基地址100000),OK,在記憶體視窗中,GO定位到01001004 可以看到這片區域都是0,那是因為還沒開始加密啊,我們在01001004右擊選擇斷點DD>硬體斷點寫入DD>Dword ,OK,F9吧,兩次後會斷到如下:
00AD181A 8B85 20ECFFFF MOV EAX,DWORD PTR SS:[EBP-13E0] ; NOTEPAD.01001000
00AD1820 83C0 04 ADD EAX,4
00AD1823 8985 20ECFFFF MOV DWORD PTR SS:[EBP-13E0],EAX
00AD1829 ^ E9 36FDFFFF JMP 00AD1564
00AD182E 83BD F4EAFFFF 0>CMP DWORD PTR SS:[EBP-150C],0
00AD1835 0F85 8A000000 JNZ 00AD18C5
00AD183B 0FB685 B0E8FFFF MOVZX EAX,BYTE PTR SS:[EBP-1750]
00AD1842 85C0 TEST EAX,EAX
00AD1844 74 7F JE SHORT 00AD18C5
停在00AD181A,OK,現在我們找那個地方了,用小妹的一個技巧吧,非常穩的,滑鼠滾輪一直往上,呵呵,8秒鐘就到了,如下:
00AD1349 FF15 C480AD00 CALL DWORD PTR DS:[AD80C4] ; kernel32.GetModuleHandleA DD>>>>> 這是一個重要標誌,看到它就停吧。
00AD134F 3985 BCE8FFFF CMP DWORD PTR SS:[EBP-1744],EAX
00AD1355 75 0F JNZ SHORT 00AD1366
00AD1357 C785 B8E8FFFF 3>MOV DWORD PTR SS:[EBP-1748],0ADC530
00AD1361 E9 C4000000 JMP 00AD142A
00AD1366 83A5 94E6FFFF 0>AND DWORD PTR SS:[EBP-196C],0
00AD136D C785 90E6FFFF 4>MOV DWORD PTR SS:[EBP-1970],0ADCB48
00AD1377 EB 1C JMP SHORT 00AD1395
00AD1379 8B85 90E6FFFF MOV EAX,DWORD PTR SS:[EBP-1970]
00AD137F 83C0 0C ADD EAX,0C
00AD1382 8985 90E6FFFF MOV DWORD PTR SS:[EBP-1970],EAX
00AD1388 8B85 94E6FFFF MOV EAX,DWORD PTR SS:[EBP-196C]
00AD138E 40 INC EAX
00AD138F 8985 94E6FFFF MOV DWORD PTR SS:[EBP-196C],EAX
00AD1395 8B85 90E6FFFF MOV EAX,DWORD PTR SS:[EBP-1970]
00AD139B 8338 00 CMP DWORD PTR DS:[EAX],0
00AD139E 0F84 86000000 JE 00AD142A DDD>>>每次jmp就可以不加密了。呵呵。
00AD13A4 8B85 90E6FFFF MOV EAX,DWORD PTR SS:[EBP-1970]
00AD13AA 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
00AD13AD 83E0 01 AND EAX,1
00AD13B0 85C0 TEST EAX,EAX
00AD13B2 74 25 JE SHORT 00AD13D9
00AD13B4 A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
但是我們現在改是不用的,必須每次到這的時候就改,我們要走在00AD1349前,OK,重新再來,開頭的幾步仍然一樣。5次F9之後,越過異常框,OK,看一下堆疊:
0012BEF0 00AD077C /CALL 到 VirtualProtect 來自 00AD0776
0012BEF4 01001000 |Address = NOTEPAD.01001000
0012BEF8 00007000 |Size = 7000 (28672.)
0012BEFC 00000004 |NewProtect = PAGE_READWRITE
0012BF00 0012D71C pOldProtect = 0012D71C
可以看到00AD0776離我們的目標00AD1349不遠了,取消斷點,按CTRL+F9,然後一步一步F8,看到一些jmp往上跳的,可以直接F4過去。很快的就可以到我們的00AD1349了,馬上在00AD139E 0F84 86000000 JE 00AD142A 這裡下斷,按F9吧,斷下當然顯示不跳了,改一下標誌位,使它跳,不要取消斷點,繼續F9,依此一直下去,OK我大約斷了9次,再按一下的時候,OD異常,無法處理程式了,如果是3.4的程式,可以直接拿出Importrec了,可是3.6不行,走到oep吧,怎麼走呢,再按一下任何鍵都飛了,所以第10次當然不能按F9了,9次之後直接下斷,BP GetCurrentThreadId
OK,停下來了,CTRL+F9,馬上:
0AD44F2 53 PUSH EBX
00AD44F3 8B48 70 MOV ECX,DWORD PTR DS:[EAX+70]
00AD44F6 56 PUSH ESI
00AD44F7 3348 6C XOR ECX,DWORD PTR DS:[EAX+6C]
00AD44FA 57 PUSH EDI
00AD44FB 6A FE PUSH -2
00AD44FD 3348 58 XOR ECX,DWORD PTR DS:[EAX+58]
00AD4500 5B POP EBX
00AD4501 F6C1 40 TEST CL,40
00AD4504 75 08 JNZ SHORT 00AD450E
00AD4506 6A 01 PUSH 1
00AD4508 E8 8609FEFF CALL 00AB4E93
00AD450D 59 POP ECX
00AD450E 8B7424 10 MOV ESI,DWORD PTR SS:[ESP+10]
00AD4512 833E 02 CMP DWORD PTR DS:[ESI],2
00AD4515 75 40 JNZ SHORT 00AD4557
00AD4517 6A 00 PUSH 0
00AD4519 E8 E231FEFF CALL 00AB7700
00AD451E A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
00AD4523 59 POP ECX
00AD4524 8B48 40 MOV ECX,DWORD PTR DS:[EAX+40]
00AD4527 8B50 70 MOV EDX,DWORD PTR DS:[EAX+70]
00AD452A 3348 08 XOR ECX,DWORD PTR DS:[EAX+8]
00AD452D 33CA XOR ECX,EDX
00AD452F 74 14 JE SHORT 00AD4545
00AD4531 8B78 68 MOV EDI,DWORD PTR DS:[EAX+68]
00AD4534 3378 04 XOR EDI,DWORD PTR DS:[EAX+4]
00AD4537 8B46 18 MOV EAX,DWORD PTR DS:[ESI+18]
00AD453A 33FA XOR EDI,EDX
00AD453C 2BC7 SUB EAX,EDI
00AD453E 03C1 ADD EAX,ECX
00AD4540 8946 1C MOV DWORD PTR DS:[ESI+1C],EAX
00AD4543 EB 04 JMP SHORT 00AD4549
00AD4545 8366 1C 00 AND DWORD PTR DS:[ESI+1C],0
00AD4549 FF76 18 PUSH DWORD PTR DS:[ESI+18]
00AD454C E8 908FFEFF CALL 00ABD4E1
00AD4551 59 POP ECX
00AD4552 E9 AC000000 JMP 00AD4603
00AD4557 E8 7918FEFF CALL 00AB5DD5
00AD455C C705 DCDBAD00 E>MOV DWORD PTR DS:[ADDBDC],0ADE6EC ; ASCII "RB"
00AD4566 FF15 1481AD00 CALL DWORD PTR DS:[AD8114] ; kernel32.GetCurrentThreadId
00AD456C A3 AC56AE00 MOV DWORD PTR DS:[AE56AC],EAX
00AD4571 E8 1537FEFF CALL 00AB7C8B
00AD4576 6A 00 PUSH 0
00AD4578 E8 648FFEFF CALL 00ABD4E1
00AD457D 6A 00 PUSH 0
00AD457F C705 DCDBAD00 E>MOV DWORD PTR DS:[ADDBDC],0ADE6E8 ; ASCII "RC"
00AD4589 E8 7231FEFF CALL 00AB7700
00AD458E 59 POP ECX
00AD458F 59 POP ECX
00AD4590 E8 4A11FFFF CALL 00AC56DF
00AD4595 8BF8 MOV EDI,EAX
00AD4597 A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
00AD459C 8B48 70 MOV ECX,DWORD PTR DS:[EAX+70]
00AD459F 3348 40 XOR ECX,DWORD PTR DS:[EAX+40]
00AD45A2 3348 08 XOR ECX,DWORD PTR DS:[EAX+8]
00AD45A5 03F9 ADD EDI,ECX
00AD45A7 8B0E MOV ECX,DWORD PTR DS:[ESI]
00AD45A9 85C9 TEST ECX,ECX
00AD45AB 75 2F JNZ SHORT 00AD45DC
00AD45AD 8B78 70 MOV EDI,DWORD PTR DS:[EAX+70]
00AD45B0 E8 2A11FFFF CALL 00AC56DF
00AD45B5 8B0D 9455AE00 MOV ECX,DWORD PTR DS:[AE5594] ; NOTEPAD.0104A260
00AD45BB FF76 14 PUSH DWORD PTR DS:[ESI+14]
00AD45BE 8B51 40 MOV EDX,DWORD PTR DS:[ECX+40]
00AD45C1 FF76 10 PUSH DWORD PTR DS:[ESI+10]
00AD45C4 3351 08 XOR EDX,DWORD PTR DS:[ECX+8]
00AD45C7 FF76 0C PUSH DWORD PTR DS:[ESI+C]
00AD45CA 33D7 XOR EDX,EDI
00AD45CC 03C2 ADD EAX,EDX
00AD45CE 8B51 68 MOV EDX,DWORD PTR DS:[ECX+68]
00AD45D1 3351 04 XOR EDX,DWORD PTR DS:[ECX+4]
00AD45D4 33D7 XOR EDX,EDI
00AD45D6 2BC2 SUB EAX,EDX
00AD45D8 FFD0 CALL EAX
00AD45DA EB 25 JMP SHORT 00AD4601
00AD45DC 83F9 01 CMP ECX,1
00AD45DF 75 22 JNZ SHORT 00AD4603
00AD45E1 FF76 04 PUSH DWORD PTR DS:[ESI+4]
00AD45E4 FF76 08 PUSH DWORD PTR DS:[ESI+8]
00AD45E7 6A 00 PUSH 0
00AD45E9 E8 F110FFFF CALL 00AC56DF
00AD45EE 50 PUSH EAX
00AD45EF A1 9455AE00 MOV EAX,DWORD PTR DS:[AE5594]
00AD45F4 8B48 70 MOV ECX,DWORD PTR DS:[EAX+70]
00AD45F7 3348 68 XOR ECX,DWORD PTR DS:[EAX+68]
00AD45FA 3348 04 XOR ECX,DWORD PTR DS:[EAX+4]
00AD45FD 2BF9 SUB EDI,ECX
00AD45FF FFD7 CALL EDI DDDDD EDI=OEP=01006ae0
好了,拿出Import1.6 不要1.4了,呵呵,OEP填6AE0 這下可以獲取很多函式了,無效的一律CUT吧,好。執行一下吧,OK,然後再拿Lordpe rebuild一下,減小體積吧。呵呵。
感謝 以前寫過AM教程的許多人,謝謝所有論壇上的人。
相關文章
- 壹次脫殼法――Armadillo 雙程式標準殼 快速脫殼2015-11-15
- Armadillo V3.01標準加殼方式的脫殼(第一篇)--SoundEdit
Pro2015-11-15
- Armadillo V2.xx標準加殼方式的脫殼(第二篇)--Virtual
Personality 4.02015-11-15
- Armadillo V3.6雙程式標準殼 ------神速脫殼大法2015-11-15
- 關於雙程式Armadillo標準殼的脫法2015-11-15
- 用Armadillo標準加殼的程式的脫殼和引入表修復方案---OLLYDBG (8千字)2015-11-15
- Armadillo3.60
加殼的EXE檔案脫殼全過程2004-09-08
- Armadillo 2.52加殼原理分析和改進的脫殼方法
(12千字)2015-11-15
- Armadillo 3.6主程式脫殼2015-11-15
- 脫PicturesToExe v3.60的殼 (1千字)2001-09-15REST
- 脫殼----對用pecompact加殼的程式進行手動脫殼
(1千字)2000-07-30
- iOS逆向學習之五(加殼?脫殼?)2019-10-10iOS
- 殼的工作原理脫殼2013-04-10
- Armadillo殼時間問題的解決And脫殼――Mr.Captor
V2.82015-11-15APT
- 用TRW快速手脫Armadillo V2.20加殼程式――Win98的Calc.exe、Notepad.exe等2015-11-15
- 脫殼----對用Petite2.2加殼的程式進行手動脫殼的一點分析
(5千字)2000-07-27
- ASPROtect 1.22加殼的ahaview2.0脫殼 (5千字)2002-03-24View
- 對PECompact加殼的DLL脫殼的一點分析 (7千字)2000-08-17
- 關於Armadillo 1.8x-2.x的anti-debug&加殼原理初步探討和脫殼方法
(12千字)2002-04-11
- 用Arm3.75加殼的cc
版+iat亂序主程式的脫殼 (1)2004-10-02
- Krypton
0.5加殼程式脫殼及輸入表修復記2004-10-06
- 手動脫殼的教程(由petite v2.2加殼) (4千字)2001-11-26
- Asprotect 1.2x 加殼的 Advanced Direct
Remailer 2.17 脫殼 (3千字)2002-06-20REMAI
- 以殼解殼--SourceRescuer脫殼手記破解分析2004-11-16
- 小甜餅 --- 有關新版Asprotect加殼程式的脫殼的又一種思路
(798字)2000-09-10
- 用Ollydbg手脫Petite
V2.2加殼的DLL2004-12-27
- 用OD對Aspr加殼程式的手動脫殼及修復 (7千字)2015-11-15
- 同益起名大師
3.29 脫殼加爆破2004-09-22
- VBExplorer.exe脫殼教程
附脫殼指令碼2015-11-15指令碼
- 轉載:Petite 脫殼“標準”解決方法 (1千字)2001-02-06
- International CueClub主程式脫殼(Softwrap殼)2004-09-12
- ExeStealth 常用脫殼方法 + ExeStealth V2.72主程式脫殼2015-11-15
- 某IOT蠕蟲病毒分析之UPX脫殼實戰2018-04-11
- ASPRTECT1.2X加殼的Delphi
Application Peeper Pro 2.3.1.9 脫殼(簡單) (3千字)2002-04-06APP
- 談談如何使用加殼保護自己的軟體不被常用方法脫殼(2千字)2000-10-10
- 關於用ASProtect v1.3加殼軟體的脫殼方法體會 (5千字)2001-11-21
- 脫ASPack2.12加殼的DLL檔案簡便方法2004-12-18
- 脫殼基本知識2015-11-15