首页
社区
课程
招聘
[求助]水晶情缘的xp星号查看器不能用模拟跟踪法了!!
发表于: 2006-4-8 13:38 4954

[求助]水晶情缘的xp星号查看器不能用模拟跟踪法了!!

2006-4-8 13:38
4954
最近混迹于看雪论坛,看到不少的高手脱FSG1.33壳都用模拟跟踪法,我也想试试的。由于比较讨厌这个查看器的广告作风。一关闭就自动打开水晶情缘的网页。参考了各位的指导就开始做了。用pe一查是FSG 1.33 -> dulek/xt,用od载入,查看memory map
Memory map, 条目 15
地址=00406000
大小=00001000 (4096.)
Owner=passxp0  00400000
Section=
Contains=SFX,imports,resources
Type=Imag 01001002
Access=R
Initial access=RWE
开始跟踪了。但是结果却是
003712C0 >  8BFF            MOV EDI,EDI
003712C2    55              PUSH EBP
003712C3    8BEC            MOV EBP,ESP
003712C5    8B45 0C         MOV EAX,DWORD PTR SS:[EBP+C]
003712C8    33C9            XOR ECX,ECX
003712CA    2BC1            SUB EAX,ECX
003712CC    74 26           JE SHORT IMM32.003712F4
003712CE    48              DEC EAX
003712CF    0F84 B3100000   JE IMM32.00372388
003712D5    48              DEC EAX
003712D6    48              DEC EAX
003712D7    74 07           JE SHORT IMM32.003712E0
003712D9    33C0            XOR EAX,EAX
003712DB    40              INC EAX
003712DC    5D              POP EBP
003712DD    C2 0C00         RETN 0C
003712E0    A1 00603800     MOV EAX,DWORD PTR DS:[386000]
003712E5    3BC1            CMP EAX,ECX

不能得到oep的啊。真是百思不得其解的。但是脱其他练习的壳就可以的。不知道这个程序哪里作怪的。万望各位赐教!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
2
我以前写的东东,希望对你有帮助

---------------------------------------------------------------------
脱FSG壳体会  BY 逍遥风

看了《破解实例信息资源》手动脱壳入门第十五篇 FSG 1.33脱壳,基本看不懂里面的方法。
于是自己还是用笨方法F8手动跟踪,跟踪过程中得到些心得,与大家分享。
先用OD,载入“《破解实例信息资源》手动脱壳入门第十五篇 FSG 1.33脱壳”中带的用VB写的小程序。
停在这里:
00404B58 >  BE A4014000     MOV ESI,fsg1_33.004001A4
00404B5D    AD              LODS DWORD PTR DS:[ESI]
00404B5E    93              XCHG EAX,EBX
00404B5F    AD              LODS DWORD PTR DS:[ESI]
00404B60    97              XCHG EAX,EDI
00404B61    AD              LODS DWORD PTR DS:[ESI]
00404B62    56              PUSH ESI
00404B63    96              XCHG EAX,ESI
00404B64    B2 80           MOV DL,80
00404B66    A4              MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
00404B67    B6 80           MOV DH,80
00404B69    FF13            CALL DWORD PTR DS:[EBX]
00404B6B  ^ 73 F9           JNB SHORT fsg1_33.00404B66
00404B6D    33C9            XOR ECX,ECX
00404B6F    FF13            CALL DWORD PTR DS:[EBX]
00404B71    73 16           JNB SHORT fsg1_33.00404B89
00404B73    33C0            XOR EAX,EAX
00404B75    FF13            CALL DWORD PTR DS:[EBX]
00404B77    73 1F           JNB SHORT fsg1_33.00404B98
一路F8向下走,所有的CALL用F8步过,遇到往回跳的地方,用F4跳过。
一直到(注意最后一句,00404BE4那个地方)
00404BE1    AD              LODS DWORD PTR DS:[ESI]
00404BE2    97              XCHG EAX,EDI
00404BE3    56              PUSH ESI
00404BE4    FF13            CALL DWORD PTR DS:[EBX]                  ; KERNEL32.LoadLibraryA  (注意这里)
当到0040BE4时,出现一句 “KERNEL32.LoadLibraryA”。再往下跟一点就到OEP了
00404BE8    84C0            TEST AL,AL
00404BEA  ^ 75 FB           JNZ SHORT fsg1_33.00404BE7
00404BEC    FE0E            DEC BYTE PTR DS:[ESI]
00404BEE  ^ 74 F0           JE SHORT fsg1_33.00404BE0
00404BF0    79 05           JNS SHORT fsg1_33.00404BF7
00404BF2    46              INC ESI
00404BF3    AD              LODS DWORD PTR DS:[ESI]
00404BF4    50              PUSH EAX
00404BF5    EB 09           JMP SHORT fsg1_33.00404C00
00404BF7    FE0E            DEC BYTE PTR DS:[ESI]
00404BF9  - 0F84 61C5FFFF   JE fsg1_33.00401160  (00401160就是OEP)
用F8实在太慢,思考一阵。发现一个比较简单的方法。
重新载入程序,ALT+M,打开内存景象,找到第一个属主为KERNEL32的地方。
内存映射, 条目 15
地址=77E60000
大小=00001000 (4096.)
属主=KERNEL32 77E60000 (自身)
区段=
包含=PE 文件头
类型=Imag 01001002
访问=R
初始访问=RWE                       
在77E60000处下断,F9运行程序,来到
77F83141    66:8139 4D5A    CMP WORD PTR DS:[ECX],5A4D
77F83146    75 1D           JNZ SHORT ntdll.77F83165
77F83148    8B51 3C         MOV EDX,DWORD PTR DS:[ECX+3C]
77F8314B    81FA 00000010   CMP EDX,10000000
77F83151    73 12           JNB SHORT ntdll.77F83165
77F83153    8D0411          LEA EAX,DWORD PTR DS:[ECX+EDX]
77F83156    8945 E4         MOV DWORD PTR SS:[EBP-1C],EAX
77F83159    8138 50450000   CMP DWORD PTR DS:[EAX],4550
77F8315F    0F85 59DD0200   JNZ ntdll.77FB0EBE
77F83165    834D FC FF      OR DWORD PTR SS:[EBP-4],FFFFFFFF
77F83169    8B4D F0         MOV ECX,DWORD PTR SS:[EBP-10]
77F8316C    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
用ALT+F9回去,
来到这里
00404BE6    95              XCHG EAX,EBP
00404BE7    AC              LODS BYTE PTR DS:[ESI]
00404BE8    84C0            TEST AL,AL
00404BEA  ^ 75 FB           JNZ SHORT fsg1_33.00404BE7
00404BEC    FE0E            DEC BYTE PTR DS:[ESI]
00404BEE  ^ 74 F0           JE SHORT fsg1_33.00404BE0
00404BF0    79 05           JNS SHORT fsg1_33.00404BF7
00404BF2    46              INC ESI
00404BF3    AD              LODS DWORD PTR DS:[ESI]
00404BF4    50              PUSH EAX
00404BF5    EB 09           JMP SHORT fsg1_33.00404C00
00404BF7    FE0E            DEC BYTE PTR DS:[ESI]    (这里比较特别,不知道能不能当作特征码)
00404BF9  - 0F84 61C5FFFF   JE fsg1_33.00401160     (这个怪跳转后面的地址00401160就是OEP了)
方法总结:1)载入程序后,打开内存镜像(ALT+M),在第一处或第二处属主为KERNEL32的地方下断。
                    2)F9运行程序,ALT+F9回到程序领空。
                    3)F8向下找到一处在“DEC BYTE PTR DS:[ESI]”下面一句,(如:上面的00404BF9 )跳转的地址就是程序OEP
用这个方法把“《破解实例信息资源》手动脱壳入门第十五篇 FSG 1.33脱壳”后面另附的CRACKME
的壳也顺利脱掉了。感觉还不错。
----------------------------------------------------------------------
2006-4-8 14:15
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
找脱壳机
不过此人发的软件一般都有校验
2006-4-8 14:17
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
SMC 压缩壳我都懒的脱
2006-4-8 14:35
0
雪    币: 621
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
现在调试到此了。
00406ABF    FF13            CALL DWORD PTR DS:[EBX]
00406AC1    95              XCHG EAX,EBP
00406AC2    AC              LODS BYTE PTR DS:[ESI]
00406AC3    84C0            TEST AL,AL
00406AC5  ^ 75 FB           JNZ SHORT passxp0.00406AC2
00406AC7    FE0E            DEC BYTE PTR DS:[ESI]
00406AC9  ^ 74 F0           JE SHORT passxp0.00406ABB
00406ACB    79 05           JNS SHORT passxp0.00406AD2
00406ACD    46              INC ESI
00406ACE    AD              LODS DWORD PTR DS:[ESI]
00406ACF    50              PUSH EAX
00406AD0    EB 09           JMP SHORT passxp0.00406ADB
00406AD2    FE0E            DEC BYTE PTR DS:[ESI]
00406AD4  - 0F84 6EA5FFFF   JE passxp0.00401048

看到那个00401048应该就是oep的了,enter进入。得到
00401048      68            DB 68                                    ;  CHAR 'h'
00401049      28            DB 28                                    ;  CHAR '('
0040104A      13            DB 13
0040104B      40            DB 40                                    ;  CHAR '@'
0040104C      00            DB 00
0040104D      E8            DB E8
0040104E      F0            DB F0
0040104F      FF            DB FF
00401050      FF            DB FF
00401051      FF            DB FF
00401052      00            DB 00
00401053      00            DB 00
00401054      00            DB 00
00401055      00            DB 00
00401056      00            DB 00
00401057      00            DB 00

对00401048F2设断,F9运行,F2取消下端。然后分析”--“从模块中删除分析得到。脱之。得到的程序却不能运行!不知道我的方法是不是有问题的。用PE查是Microsoft Visual Basic 5.0 / 6.0。看来是壳脱了,,要修复?
2006-4-8 15:09
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
然后分析”--“从模块中删除分析得到???
http://bbs.pediy.com/showthread.php?s=&threadid=22159这是我以前的垃圾文章,00406AD4   - 0F84 6EA5FFFF      je passxp.00401048

下断后直接dump,就可以运行啦(xp1)
2006-4-8 15:35
0
游客
登录 | 注册 方可回帖
返回
//