實戰Armadillo V3.60標準加殼方式的脫殼――WinXP的Notepad

看雪資料發表於2015-11-15

實戰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教程的許多人,謝謝所有論壇上的人。



相關文章