[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
[培训]科锐逆向工程师培训第53期2025年7月8日开班!