首页
论坛
课程
招聘
在98系统下用OD脱PEtite 2.X壳一法
2004-11-22 01:13 7310

在98系统下用OD脱PEtite 2.X壳一法

2004-11-22 01:13
7310
【标  题】在98系统下用OD脱PEtite 2.X壳一法

【作  者】小虾(战神[DFCG])

【日  期】2004-11-22

【使用工具】OllyDBG, ImportREC

【主  页】http://www.chinadfcg.com

【平  台】windows98系统:)

【练习程序】win98下的记事本

【下载地址】附件:PEtite 2.2.rar

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
【正  文】

  呵呵,近来一直很忙,都没有时间再玩Cracker了:((最多上坛子灌灌水),这一天比较闲,就试试在98系统下来脱PEtite 2.2的壳:)(顺便看看能不能坐上精华六的末班车:))。这个壳属于入门级的加密壳,如果在XP系统下UnPack完全可以秒杀。但若在98系统中可有点不太好脱:)(使用SoftICE也可以秒杀这个壳,但是用TRW2000和OllyDBG的话...)。

  废话少说,现在来看看为什么98下不好脱这个壳。首先启动OD,在OD调试选项中除Kernel32中的异常选上之外其余全部不要选。然后加载目标程序,

[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];载入程序后选不分析代码后将中断在0040D042外壳的入口处[/color]
[color=#008000];经这跟踪,得知以下代码只是解压数据,不必细跟,现按F9直接运行程序[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
0040D042 >  B8 00D04000     [color=#0000D0]MOV[/color] [color=#FF0000]EAX[/color],NOTEPAD.0040D000
0040D047    68 4C584000     [color=#0000D0]PUSH[/color] NOTEPAD.0040584C	[color=#008000];0040584c入栈,[/color]
0040D04C    64:FF35 0000000>[color=#0000D0]PUSH[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]FS[/color]:[0]	[color=#008000];记住这个地址[/color]
0040D053    64:8925 0000000>[color=#0000D0]MOV[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]FS[/color]:[0],[color=#FF0000]ESP[/color]	[color=#008000];挂SEH,当程序产生异常后将跳到0040584C处继续运行。[/color]
0040D05A    66:9C           PUSHFW
0040D05C    60              [color=#0000D0]PUSHAD[/color]
0040D05D    50              [color=#0000D0]PUSH[/color] [color=#FF0000]EAX[/color]
0040D05E    68 00004000     [color=#0000D0]PUSH[/color] NOTEPAD.00400000


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];当程序数据解压完毕后将在这里产生一个写入异常[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
0040D135    A4              [color=#0000D0]MOVS[/color] [color=#FF00FF]BYTE[/color] PTR [color=#FF0000]ES[/color]:[[color=#FF0000]EDI[/color]],[color=#FF00FF]BYTE[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ESI[/color]]	[color=#008000];产生内存写入异常[/color]
0040D136    33C9            [color=#0000D0]XOR[/color] [color=#FF0000]ECX[/color],[color=#FF0000]ECX[/color]
0040D138    83FB 00         [color=#0000D0]CMP[/color] [color=#FF0000]EBX[/color],0
0040D13B  ^ 7E A4           [color=#0000D0]JLE[/color] SHORT NOTEPAD.0040D0E1
0040D13D    E8 AAFFFFFF     [color=#0000D0]CALL[/color] NOTEPAD.0040D0EC

0040D135    A4              [color=#0000D0]MOVS[/color] [color=#FF00FF]BYTE[/color] PTR [color=#FF0000]ES[/color]:[[color=#FF0000]EDI[/color]],[color=#FF00FF]BYTE[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ESI[/color]]
0040D136    33C9            [color=#0000D0]XOR[/color] [color=#FF0000]ECX[/color],[color=#FF0000]ECX[/color]
0040D138    83FB 00         [color=#0000D0]CMP[/color] [color=#FF0000]EBX[/color],0
0040D13B  ^ 7E A4           [color=#0000D0]JLE[/color] SHORT NOTEPAD.0040D0E1
0040D13D    E8 AAFFFFFF     [color=#0000D0]CALL[/color] NOTEPAD.0040D0EC


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];在前面我们已经知道程序产生异常后将跳到0040584C处继续运行[/color]
[color=#008000];所以我们在命令行中输入“BP 0040584C"处下一个INT 3断点[/color]
[color=#008000];按Shift+F9运行忽略异常,程序将中断在0040584C处,[/color]
[color=#008000];到这里后我们就要慢慢的跟踪了。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
0040584C    E8 4F000000     [color=#0000D0]CALL[/color] NOTEPAD.004058A0	[color=#008000];变形Call,F7进入[/color]
00405851    D9D7            [color=#0000D0]FST[/color] [color=#FF0000]EDI[/color]
00405853  ^ 71 AC           [color=#0000D0]JNO[/color] SHORT NOTEPAD.00405801
00405855  ^ E0 B9           LOOPDNE SHORT NOTEPAD.00405810
00405857    58              [color=#0000D0]POP[/color] [color=#FF0000]EAX[/color]
00405858    098E CDC22DD8   [color=#0000D0]OR[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ESI[/color]+D82DC2CD],[color=#FF0000]ECX[/color]


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];进入后到这里,[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
004058A0    33C0            [color=#0000D0]XOR[/color] [color=#FF0000]EAX[/color],[color=#FF0000]EAX[/color]
004058A2    5E              [color=#0000D0]POP[/color] [color=#FF0000]ESI[/color]
004058A3    64:8B18         [color=#0000D0]MOV[/color] [color=#FF0000]EBX[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]FS[/color]:[[color=#FF0000]EAX[/color]]
004058A6    8B1B            [color=#0000D0]MOV[/color] [color=#FF0000]EBX[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EBX[/color]]
004058A8    8D63 D6         [color=#0000D0]LEA[/color] [color=#FF0000]ESP[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EBX[/color]-2A]
004058AB    5D              [color=#0000D0]POP[/color] [color=#FF0000]EBP[/color]
004058AC    8D8E BD020000   [color=#0000D0]LEA[/color] [color=#FF0000]ECX[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ESI[/color]+2BD]
004058B2    894B 04         [color=#0000D0]MOV[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EBX[/color]+4],[color=#FF0000]ECX[/color]
004058B5    64:891D 0000000>[color=#0000D0]MOV[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]FS[/color]:[0],[color=#FF0000]EBX[/color]
004058BC    8B3C24          [color=#0000D0]MOV[/color] [color=#FF0000]EDI[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]SS[/color]:[[color=#FF0000]ESP[/color]]
004058BF    81C7 39000000   [color=#0000D0]ADD[/color] [color=#FF0000]EDI[/color],39
004058C5    6A 0E           [color=#0000D0]PUSH[/color] 0E
004058C7    59              [color=#0000D0]POP[/color] [color=#FF0000]ECX[/color]
004058C8    F3:A4           [color=#0000D0]REP[/color] [color=#0000D0]MOVS[/color] [color=#FF00FF]BYTE[/color] PTR [color=#FF0000]ES[/color]:[[color=#FF0000]EDI[/color]],[color=#FF00FF]BYTE[/color] PTR [color=#FF0000]DS[/color]:[>
004058CA    FF33            [color=#0000D0]PUSH[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EBX[/color]]
004058CC    56              [color=#0000D0]PUSH[/color] [color=#FF0000]ESI[/color]
004058CD    57              [color=#0000D0]PUSH[/color] [color=#FF0000]EDI[/color]
004058CE    8DB7 71010000   [color=#0000D0]LEA[/color] [color=#FF0000]ESI[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EDI[/color]+171]
004058D4    8BCE            [color=#0000D0]MOV[/color] [color=#FF0000]ECX[/color],[color=#FF0000]ESI[/color]
004058D6    2BCF            [color=#0000D0]SUB[/color] [color=#FF0000]ECX[/color],[color=#FF0000]EDI[/color]
004058D8    F3:AA           [color=#0000D0]REP[/color] [color=#0000D0]STOS[/color] [color=#FF00FF]BYTE[/color] PTR [color=#FF0000]ES[/color]:[[color=#FF0000]EDI[/color]]


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];单步运行到这里时,程序开始设置单步异常[/color]
[color=#008000];这时,不能再单步跟踪了,不然等下解压出的代码就不正确了[/color]
[color=#008000];按F9运行程序[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
004058DA    60              [color=#0000D0]PUSHAD[/color]
004058DB    66:9C           PUSHFW
004058DD    0FBA3C24 08     [color=#0000D0]BTC[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]SS[/color]:[[color=#FF0000]ESP[/color]],8
004058E2    66:9D           POPFW
004058E4    5B              [color=#0000D0]POP[/color] [color=#FF0000]EBX[/color]


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];单步异常,我们在004058E6处下一个断点,按Shift+F9忽略异常[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
004058E5    5A              [color=#0000D0]POP[/color] [color=#FF0000]EDX[/color]			[color=#008000];单步异常[/color]


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];程序中断这里,POP DWORD PTR FS:[0]语句,典型的释放异常代码[/color]
[color=#008000];到这里开始程序已常没有异常了。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
004058E6    64:8F05 0000000>[color=#0000D0]POP[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]FS[/color]:[0]	[color=#008000];释放异常[/color]
004058ED    58              [color=#0000D0]POP[/color] [color=#FF0000]EAX[/color]
004058EE    6A 00           [color=#0000D0]PUSH[/color] 0
004058F0    53              [color=#0000D0]PUSH[/color] [color=#FF0000]EBX[/color]
004058F1    33DB            [color=#0000D0]XOR[/color] [color=#FF0000]EBX[/color],[color=#FF0000]EBX[/color]
004058F3    68 3D030000     [color=#0000D0]PUSH[/color] 33D


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];到这里要注意了,OllyDBG在98系统为什么脱不了这个壳,关键点就在下面[/color]
[color=#008000];这下面的代码是解密跨段跳到入口的代码,若这里解密不成功,我们就找不[/color]
[color=#008000];到程序的OEP了。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
004058F8    8B0C24          [color=#0000D0]MOV[/color] [color=#FF0000]ECX[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]SS[/color]:[[color=#FF0000]ESP[/color]]
004058FB    0FBAE3 00       [color=#0000D0]BT[/color] [color=#FF0000]EBX[/color],0
004058FF    72 16           [color=#0000D0]JB[/color] SHORT NOTEPAD.00405917
00405901    64:8B35 1C00000>[color=#0000D0]MOV[/color] [color=#FF0000]ESI[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]FS[/color]:[1C]
00405908    0FBAF6 00       [color=#0000D0]BTR[/color] [color=#FF0000]ESI[/color],0


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];0040590C是最关健的一句,只要将这一句NOP掉,我们就能找到程序的跨段[/color]
[color=#008000];跳到OEP的代码。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
0040590C    64:0335 2200000>[color=#0000D0]ADD[/color] [color=#FF0000]ESI[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]FS[/color]:[22]	[color=#008000];将这一句NOP掉[/color]
00405913    46              [color=#0000D0]INC[/color] [color=#FF0000]ESI[/color]
00405914    66:33DE         [color=#0000D0]XOR[/color] [color=#FF0000]BX[/color],[color=#FF0000]SI[/color]
00405917    321C11          [color=#0000D0]XOR[/color] [color=#FF0000]BL[/color],[color=#FF00FF]BYTE[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ECX[/color]+[color=#FF0000]EDX[/color]]
0040591A    C1C3 07         [color=#0000D0]ROL[/color] [color=#FF0000]EBX[/color],7
0040591D    49              [color=#0000D0]DEC[/color] [color=#FF0000]ECX[/color]
0040591E  ^ 7D [color=#FF00FF]DB[/color]           [color=#0000D0]JGE[/color] SHORT NOTEPAD.004058FB
00405920    8D48 37         [color=#0000D0]LEA[/color] [color=#FF0000]ECX[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EAX[/color]+37]
00405923    3119            [color=#0000D0]XOR[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ECX[/color]],[color=#FF0000]EBX[/color]
00405925    3159 04         [color=#0000D0]XOR[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ECX[/color]+4],[color=#FF0000]EBX[/color]
00405928    3159 08         [color=#0000D0]XOR[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ECX[/color]+8],[color=#FF0000]EBX[/color]
0040592B    3159 0C         [color=#0000D0]XOR[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ECX[/color]+C],[color=#FF0000]EBX[/color]
0040592E    59              [color=#0000D0]POP[/color] [color=#FF0000]ECX[/color]
0040592F    315C11 01       [color=#0000D0]XOR[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ECX[/color]+[color=#FF0000]EDX[/color]+1],EBX[color=#008000] ;解密后的代码[/color]
00405933    33DB            [color=#0000D0]XOR[/color] [color=#FF0000]EBX[/color],[color=#FF0000]EBX[/color]
00405935    8BF2            [color=#0000D0]MOV[/color] [color=#FF0000]ESI[/color],[color=#FF0000]EDX[/color]


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];单步反跟踪,若是单步跟踪到这里的话,比较结果将不相同。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
00405937    81BA 71A8FFFF 4>[color=#0000D0]CMP[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EDX[/color]+FFFFA871],0D042
00405941    75 21           [color=#0000D0]JNZ[/color] SHORT NOTEPAD.00405964	[color=#008000];跳就OVER了[/color]
00405943    81EE B7570000   [color=#0000D0]SUB[/color] [color=#FF0000]ESI[/color],57B7
00405949    0FB64E 06       [color=#0000D0]MOVZX[/color] [color=#FF0000]ECX[/color],[color=#FF00FF]BYTE[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ESI[/color]+6]
0040594D    6BC9 0A         [color=#0000D0]IMUL[/color] [color=#FF0000]ECX[/color],[color=#FF0000]ECX[/color],0A
00405950    66:81C1 3E00    [color=#0000D0]ADD[/color] [color=#FF0000]CX[/color],3E
00405955    331E            [color=#0000D0]XOR[/color] [color=#FF0000]EBX[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ESI[/color]]
00405957    D3C3            [color=#0000D0]ROL[/color] [color=#FF0000]EBX[/color],[color=#FF0000]CL[/color]
00405959    83C6 04         [color=#0000D0]ADD[/color] [color=#FF0000]ESI[/color],4
0040595C    49              [color=#0000D0]DEC[/color] [color=#FF0000]ECX[/color]
0040595D  ^ 75 F6           [color=#0000D0]JNZ[/color] SHORT NOTEPAD.00405955
0040595F    3958 04         [color=#0000D0]CMP[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EAX[/color]+4],[color=#FF0000]EBX[/color] [color=#008000] ;再比较[/color]
00405962    74 08           [color=#0000D0]JE[/color] SHORT NOTEPAD.0040596C[color=#008000]   ;不跳就OVER[/color]
00405964    83C4 2A         [color=#0000D0]ADD[/color] [color=#FF0000]ESP[/color],2A
00405967  - E9 A9760000     [color=#0000D0]JMP[/color] NOTEPAD.0040D015[color=#008000]      ;OVER[/color]
0040596C    BE 00600000     [color=#0000D0]MOV[/color] [color=#FF0000]ESI[/color],6000
00405971    03F5            [color=#0000D0]ADD[/color] [color=#FF0000]ESI[/color],[color=#FF0000]EBP[/color]
00405973    8D8D 00080000   [color=#0000D0]LEA[/color] [color=#FF0000]ECX[/color],[color=#FF00FF]DWORD[/color] PTR [color=#FF0000]SS[/color]:[[color=#FF0000]EBP[/color]+800]
00405979    8BD8            [color=#0000D0]MOV[/color] [color=#FF0000]EBX[/color],[color=#FF0000]EAX[/color]
0040597B    833E 00         [color=#0000D0]CMP[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]ESI[/color]],0


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];0040597E最后跳到00405B92将跳出大循环,所以我们在00405B92处下断[/color]
[color=#008000];F9运行程序。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
0040597E    0F84 0E020000   [color=#0000D0]JE[/color] NOTEPAD.00405B92
00405984    51              [color=#0000D0]PUSH[/color] [color=#FF0000]ECX[/color]
00405985    51              [color=#0000D0]PUSH[/color] [color=#FF0000]ECX[/color]
00405986    FF95 90070000   [color=#0000D0]CALL[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]SS[/color]:[[color=#FF0000]EBP[/color]+790]


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];程序中断在这里。[/color]
00405B92    59              [color=#0000D0]POP[/color] [color=#FF0000]ECX[/color]
00405B93    5E              [color=#0000D0]POP[/color] [color=#FF0000]ESI[/color]
00405B94    FD              [color=#0000D0]STD[/color]
00405B95    33C0            [color=#0000D0]XOR[/color] [color=#FF0000]EAX[/color],[color=#FF0000]EAX[/color]
00405B97    B9 56030000     [color=#0000D0]MOV[/color] [color=#FF0000]ECX[/color],356
00405B9C    E8 98740000     [color=#0000D0]CALL[/color] NOTEPAD.0040D039


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];这个Call若是前面没有经过处理,将是以下的样子。这个Call是我没有处理[/color]
[color=#008000];上面的代码所得到的结果,可以看出和上面的Call地址完全不一样,我们若是[/color]
[color=#008000];再走一步程序就OVER了。[/color]
[color=#008000];00405B9C    E8 7AA55CB5     CALL B59D011B[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [/color]

[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];经过上面的Call之后来到这里。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
0040D039    5F              [color=#0000D0]POP[/color] [color=#FF0000]EDI[/color]
0040D03A    F3:AA           [color=#0000D0]REP[/color] [color=#0000D0]STOS[/color] [color=#FF00FF]BYTE[/color] PTR [color=#FF0000]ES[/color]:[[color=#FF0000]EDI[/color]]
0040D03C    61              [color=#0000D0]POPAD[/color]
0040D03D    66:9D           POPFW
0040D03F    83C4 08         [color=#0000D0]ADD[/color] [color=#FF0000]ESP[/color],8
0040D042 >- E9 8540FFFF     [color=#0000D0]JMP[/color] NOTEPAD.004010CC[color=#008000] ;跳到记事本入口,[/color]
0040D047  - E9 22204566     [color=#0000D0]JMP[/color] SHELL32.DragFinish


[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
[color=#008000];记事本入口,以后的事不用我说了吧,DOWN和修复。[/color]
[color=#008000];>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[/color]
004010CC  /.  55            [color=#0000D0]PUSH[/color] [color=#FF0000]EBP[/color]
004010CD  |.  8BEC          [color=#0000D0]MOV[/color] [color=#FF0000]EBP[/color],[color=#FF0000]ESP[/color]
004010CF  |.  83EC 44       [color=#0000D0]SUB[/color] [color=#FF0000]ESP[/color],44
004010D2  |.  56            [color=#0000D0]PUSH[/color] [color=#FF0000]ESI[/color]
004010D3  |.  FF15 E4634000 [color=#0000D0]CALL[/color] [color=#FF00FF]DWORD[/color] PTR [color=#FF0000]DS[/color]:[4063E4]                       [color=#008000]; [GetCommandLineA[/color]
004010D9  |.  8BF0          [color=#0000D0]MOV[/color] [color=#FF0000]ESI[/color],[color=#FF0000]EAX[/color]
004010DB  |.  8A00          [color=#0000D0]MOV[/color] [color=#FF0000]AL[/color],[color=#FF00FF]BYTE[/color] PTR [color=#FF0000]DS[/color]:[[color=#FF0000]EAX[/color]]
004010DD  |.  3C 22         [color=#0000D0]CMP[/color] [color=#FF0000]AL[/color],22
004010DF  |.  75 1B         [color=#0000D0]JNZ[/color] SHORT NOTEPAD.004010FC


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
【总  结】
  这个壳怪就怪在0040590C处的ADD ESI,DWORD PTR FS:[22]这一句上,这一句语句当我们没有加载OD时和加载OD时得出的值完全不同(在98系统),我曾用汇编测试过这一句,结果也一样,用OD加载和不用OD加得出的结果完全不同,也就是这一句语句令到程序解码错误,从而没办法在98下脱壳(在2K和XP下则没有这情况)。搞不明白FS:[22h]的内存地址和OD和有什么关系,望知道的说一下,不胜感激。

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
【声  明】本文欢迎转载,但请保持文章完整性。谢谢!
                                                 ----战神 2004-11-22

[2022冬季班]《安卓高级研修班(网课)》月薪三万班招生中~

收藏
点赞0
打赏
分享
最新回复 (12)
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyd009 活跃值 2004-11-22 01:42
2
0
小虾就是战神啊,支持啊
雪    币: 19
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
pendan2001 活跃值 4 2004-11-22 09:36
3
0
顶!
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiaoxinxin 活跃值 2004-11-22 10:55
4
0
学习
雪    币: 1386
活跃值: 活跃值 (2132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limee 活跃值 2004-11-22 14:54
5
0
你在OD下面看到的FS:[22]的值是多少啊?
我Win98随便加了个程序,FS:[22]访问不到?
Fs:[34]到是可以访问到的,也不知道插件的
下标是什么进制的

最初由 小虾 发布
【标  题】在98系统下用OD脱PEtite 2.X壳一法

【作  者】小虾(战神[DFCG])

【日  期】2004-11-22
........
雪    币: 2199
活跃值: 活跃值 (50)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 活跃值 10 2004-11-22 16:09
6
0
最初由 limee 发布
你在OD下面看到的FS:[22]的值是多少啊?
我Win98随便加了个程序,FS:[22]访问不到?
Fs:[34]到是可以访问到的,也不知道插件的
下标是什么进制的

........

十进制的34正是十六进制的22。
雪    币: 1386
活跃值: 活跃值 (2132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limee 活跃值 2004-11-22 18:08
7
0
那在插件的输入框内打
dd fs:[34]
显示的是fs:[34],还是fs:[52]?
插件内的数字无后缀H是表示10进制,还是16进制?

我的Win98下
dd fs:[22]是没有权限访问.
dd fs:[34]是一个00000001的DWord,
反正先给你参考一下吧

最初由 小虾 发布

十进制的34正是十六进制的22。
雪    币: 2199
活跃值: 活跃值 (50)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 活跃值 10 2004-11-22 22:09
8
0
最初由 limee 发布
那在插件的输入框内打
dd fs:[34]
显示的是fs:[34],还是fs:[52]?
插件内的数字无后缀H是表示10进制,还是16进制?

........

在98系统中OD是没办法读取FS:[22h]的地址的内容,我是用汇编编一个小程序来读取FS:[22h]的内容,然后再用对话框显示出来。以下是测试程序,你可以看看正常运行和用OD加载运行得出的值变化多大。:D 附件:test.rar
雪    币: 1386
活跃值: 活跃值 (2132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limee 活跃值 2004-11-23 02:52
9
0
直接运行是20b10000
OD是b1918648
Trw2000是33310000
你参考一下吧,希望对你有帮助

最初由 小虾 发布

在98系统中OD是没办法读取FS:[22h]的地址的内容,我是用汇编编一个小程序来读取FS:[22h]的内容,然后再用对话框显示出来。以下是测试程序,你可以看看正常运行和用OD加载运行得出的值变化多大。:D 附件:test.rar
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
clide2000 活跃值 7 2004-11-23 08:15
10
0
学习了,支持
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jkers 活跃值 2004-12-12 08:59
11
0
   学习中!
雪    币: 46951
活跃值: 活跃值 (170309)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 活跃值 2004-12-12 09:04
12
0
支持!!!
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Benki 活跃值 2004-12-13 01:03
13
0
学习!!!
游客
登录 | 注册 方可回帖
返回