秋风四起 发表于 2008-9-15 10:11:34

修复文件表问题及去自检验问题,请指出我操作的不对之处

程序名称:QQ棋牌伴侣3.4.4版
编写程序:Borland Delphi 6.0 - 7.0
加壳程序:ASPack 2.12 -> Alexey Solodovnikov


OD加载程序,按F8后,显示ESP为0012FFA4,用ESP定律,下断HR 12FFA4,按F9运行,到了
00BED3B0   /75 08         JNZ SHORT QQ棋牌游.00BED3BA
00BED3B2   |B8 01000000   MOV EAX,1
00BED3B7   |C2 0C00         RETN 0C
00BED3BA   \68 E4A75000   PUSH QQ棋牌游.0050A7E4
00BED3BF    C3            RETN

到此处后,按三次F8单步,到达:
0050A7E2    50            PUSH EAX
0050A7E3    0055 8B         ADD BYTE PTR SS:,DL
0050A7E6    EC            IN AL,DX                                 ; I/O 命令
0050A7E7    B9 04000000   MOV ECX,4
0050A7EC    6A 00         PUSH 0

点OD的插件中选择ollydump--脱壳在当前调试的进程,在弹出的窗口中,点下获取EIP做为OEP,得到10A7E4,再点脱壳。选择保存文件名字为dump.exe,然后再打开Import v1.6(完美汉化版),选择QQ棋牌伴侣进程,输入入口地址:10A7E4,再点自动搜索IAT,再点获得输入信息,再点修复抓取文件,在弹出的窗口中,选择我刚脱壳的dump.exe.得到如下记录:
分析进程...
已载入模块: c:\windows\system32\ntdll.dll
已载入模块: c:\windows\system32\kernel32.dll
已载入模块: c:\windows\system32\user32.dll
已载入模块: c:\windows\system32\gdi32.dll
已载入模块: c:\windows\system32\advapi32.dll
已载入模块: c:\windows\system32\rpcrt4.dll
已载入模块: c:\windows\system32\secur32.dll
已载入模块: c:\windows\system32\oleaut32.dll
已载入模块: c:\windows\system32\msvcrt.dll
已载入模块: c:\windows\system32\ole32.dll
已载入模块: c:\windows\system32\version.dll
已载入模块: c:\windows\system32\comctl32.dll
已载入模块: c:\windows\system32\shell32.dll
已载入模块: c:\windows\system32\shlwapi.dll
已载入模块: c:\windows\system32\wsock32.dll
已载入模块: c:\windows\system32\ws2_32.dll
已载入模块: c:\windows\system32\ws2help.dll
已载入模块: c:\windows\system32\imm32.dll
已载入模块: c:\windows\system32\lpk.dll
已载入模块: c:\windows\system32\usp10.dll
已载入模块: c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
相关模块载入完成.
映像基址:00400000 大小:00804000
原始 IAT RVA 发现于: 00118628 位于块 RVA: 00118000 大小:00003000
IAT 读取成功.
RVA:00118174 来自模块:ntdll.dll 序号:0217 名称:InitializeCriticalSection         
RVA:00118170 来自模块:ntdll.dll 序号:02B6 名称:EnterCriticalSection         
RVA:0011816C 来自模块:ntdll.dll 序号:01F0 名称:LeaveCriticalSection         
RVA:001181C4 来自模块:ntdll.dll 序号:016C 名称:RtlGetLastWin32Error         
RVA:001181F4 来自模块:ntdll.dll 序号:0301 名称:RtlUnwind         
RVA:001182F8 来自模块:ntdll.dll 序号:0245 名称:RtlLeaveCriticalSection         
RVA:00118368 来自模块:ntdll.dll 序号:016B 名称:RtlGetLastWin32Error         
RVA:001183C4 来自模块:ntdll.dll 序号:0098 名称:RtlEnterCriticalSection         
RVA:001183CC 来自模块:ntdll.dll 序号:0082 名称:RtlDeleteCriticalSection         
---------------------------------------------------------------------------------------------------------------------------
当前输入表:
11 (十进制:17) 个有效模块 (已添加: +11 (十进制:+17))
1E6 (十进制:486) 个输入函数. (已添加: +1E6 (十进制:+486))
---------------------------------------------------------------------------------------------------------------------------
修正转储文件...
11 (十进制:17) 个模块
1E6 (十进制:486) 个输入函数.
*** 成功添加了新节. RVA:00807000 大小:00003000
映像输入表描述符大小: 154; 总共长度: 2312
C:\Documents and Settings\Administrator\桌面\dump_.exe 保存成功.

关闭IMPORT,再关闭OD。。。

现问:我想问一下,dump.exe和dump_.exe哪一个才是修复好的程序????

[ 本帖最后由 秋风四起 于 2008-9-15 10:15 编辑 ]

iamok 发表于 2008-9-15 10:17:08

dump_.exe为修复好的文件

秋风四起 发表于 2008-9-15 10:30:18

2.去自校验
程序脱完壳变成8000K+
比较文件大小的自校验
下GetFileSize断点
----断在这里
7C810B07 >8BFF            MOV EDI,EDI                              ; ntdll.7C910208
7C810B09    55            PUSH EBP
7C810B0A    8BEC            MOV EBP,ESP
7C810B0C    51            PUSH ECX
7C810B0D    51            PUSH ECX
7C810B0E    8D45 F8         LEA EAX,DWORD PTR SS:
7C810B11    50            PUSH EAX
----返回到程序领空,一路F8下来
00491FBC   .E8 DF2EF7FF   CALL dumped_.00404EA0
00491FC1   .75 12         JNZ SHORT dumped_.00491FD5;关键跳
;-------将jnz nop掉--去掉了自校验
00491FC3   .B8 E0930400   MOV EAX,493E0
00491FC8   .E8 3F13F7FF   CALL dumped_.0040330C
00491FCD   .C1E0 02       SHL EAX,2
00491FD0   .8945 F0       MOV DWORD PTR SS:,EAX
00491FD3   .EB 11         JMP SHORT dumped_.00491FE6
00491FD5   >B8 E0930400   MOV EAX,493E0


请问一下, 我为什么不能到达
----返回到程序领空,一路F8下来
00491FBC   .E8 DF2EF7FF   CALL dumped_.00404EA0
00491FC1   .75 12         JNZ SHORT dumped_.00491FD5;关键跳
;-------将jnz nop掉--去掉了自校验
00491FC3   .B8 E0930400   MOV EAX,493E0
00491FC8   .E8 3F13F7FF   CALL dumped_.0040330C

这里呢????

傻人有傻福 发表于 2008-9-15 10:55:25

没看懂自校验部分楼主的意思,关键跳如果只有这一个的话就保存啊/:QQ3

秋风四起 发表于 2008-9-15 11:01:03

原帖由 傻人有傻福 于 2008-9-15 10:55 发表 https://www.chinapyg.com/images/common/back.gif
没看懂自校验部分楼主的意思,关键跳如果只有这一个的话就保存啊/:QQ3

大哥,我就是找不到一品天下说的
00491FBC   .E8 DF2EF7FF   CALL dumped_.00404EA0
00491FC1   .75 12         JNZ SHORT dumped_.00491FD5;关键跳;-------将jnz nop掉--去掉了自校验
00491FC3   .B8 E0930400   MOV EAX,493E0
00491FC8   .E8 3F13F7FF   CALL dumped_.0040330C

在哪。我找不到这个地方啊,下断bp GetFileSize后,不断的按F8,都来不到这个关键CALL的地方,每个版本不同地址。。。一品天下用的是3.0.2版本做的

我想问一下,怎么才能找到一品天下大哥说的关键CALL。。。。。。。。。。。。。。难道去自检验要一个个代码的看吗????

顺便想问下,去自检验的关键CALL怎么样才容易找得着??如何判断它就是关键CALL呢???

[ 本帖最后由 秋风四起 于 2008-9-15 11:04 编辑 ]

秋风四起 发表于 2008-9-15 22:15:30

..............

km159 发表于 2008-9-15 22:36:02

bp ExitProcess

秋风四起 发表于 2008-9-15 23:56:47

原帖由 km159 于 2008-9-15 22:36 发表 https://www.chinapyg.com/images/common/back.gif
bp ExitProcess


感觉不起作用。这个中断。

Luckly 发表于 2008-9-15 23:58:04

004A0E15   /75 12         jnz   short 004A0E29                   ; NOP 即可
004A0E17   |B8 E0930400   mov   eax, 493E0
004A0E1C   |E8 DB24F6FF   call    004032FC
004A0E21   |C1E0 02         shl   eax, 2
004A0E24   |8945 F0         mov   dword ptr , eax

秋风四起 发表于 2008-9-16 02:57:38

原帖由 Luckly 于 2008-9-15 23:58 发表 https://www.chinapyg.com/images/common/back.gif
004A0E15   /75 12         jnz   short 004A0E29                   ; NOP 即可
004A0E17   |B8 E0930400   mov   eax, 493E0
004A0E1C   |E8 DB24F6FF   call    004032FC
004A0E21   |C1E0 02       ...

用搜索方式,我能找得到这个75 12的地址。。用别人说的下断什么的,来F8到这里,我怎么也到达不了。。。

大哥你认为怎么样到达75 12地点???

又怎么判断它是关键跳??????????????
页: [1] 2
查看完整版本: 修复文件表问题及去自检验问题,请指出我操作的不对之处