首页
社区
课程
招聘
求助]修复Route check
发表于: 2009-5-9 23:52 5151

求助]修复Route check

2009-5-9 23:52
5151
Ollydbg 
先设置INT3异常
载入程序,shift+F9两次,来到内存在00401000下F2中断
来到FOEP

0040B760     3D 00100000     cmp eax,1000   \\FOEP
0040B765     73 0E           jnb short ASProtec.0040B775
0040B767     F7D8            neg eax
0040B769     03C4            add eax,esp
0040B76B     83C0 04         add eax,4
0040B76E     8500            test dword ptr ds:[eax],eax

在转存窗口右键==>长型==>地址

记录IAT的启始地址:00425000  77DAEFB8  ADVAPI32.RegOpenKeyA

往下拉到结束地址:00425534

在反汇编窗口右键==>查找==>所有模块间的调用
记录
变形代码: 008C0000
双击CALL调用:记录15 FF
004016EB     FF15 F8534200   call dword ptr ds:[4253F8]         ; user32.GetClientRect
变形代码: 008C0000

OD设置全部忽略所有,重载程序,F9运行ALT+L打开记录,数下记录数据, 消息=访问违例: 写入到 [00000000]
共31个.设置内存异常.重载程序,来到最后一次异常

009FFAA5     C700 EFCA5C85   mov dword ptr ds:[eax],855CCAEF  \\最后一次异常.
009FFAAB     67:64:8F06 0000 pop dword ptr fs:[0]
009FFAB1     83C4 04         add esp,4
009FFAB4     83E8 AF         sub eax,-51
009FFAB7     83C8 4B         or eax,4B
009FFABA     58              pop eax
009FFABB     A1 0C38A000     mov eax,dword ptr ds:[A0380C]
009FFAC0     8B00            mov eax,dword ptr ds:[eax]

往下拉到此断的最后一个CALL
009FFBF5     E8 1A30FDFF     call 009D2C14
009FFBFA     E8 B5D0FFFF     call 009FCCB4  \\最后一个CALL
009FFBFF     83C4 2C         add esp,2C
009FFC02     5D              pop ebp
009FFC03     5F              pop edi
009FFC04     5E              pop esi
009FFC05     5B              pop ebx
009FFC06     C3              retn

F2下断,shift+F9,来到CALL,F2取消断点,F7步入

CTRL+F9执行到返回,记录注释窗口:返回到 00C60294

CTRL+B查找89 45 F0 B8 00 07 00 00 

来到
009F7188     8945 F0         mov dword ptr ss:[ebp-10],eax
009F718B     B8 00070000     mov eax,700
009F7190     E8 B7B3FDFF     call 009D254C  //申请内存地址
009F7195     8945 E4         mov dword ptr ss:[ebp-1C],eax
009F7198     C645 EF 00      mov byte ptr ss:[ebp-11],0

MemoryManage插件审请内存VA:01640000  size:10000,审请成功OD下面有提示
MEmoryManage Allocate:00ce0000,size 10000

把CALL 009D254C 改成 jmp 01640037
CTRL+G来到01640000
写入代码

01640000     BA 00104000     mov edx,ASProtec.<模块入口点>
01640005     803A E8         cmp byte ptr ds:[edx],0E8
01640008     75 12           jnz short 0164001C
0164000A     8B42 01         mov eax,dword ptr ds:[edx+1]
0164000D     03C2            add eax,edx
0164000F     83C0 05         add eax,5
01640012     3D 00800C00     cmp eax,0C8000                     ; 变形代码
01640017     75 03           jnz short 0164001C
01640019     EB 0C           jmp short 01640027
0164001B     90              nop
0164001C     42              inc edx
0164001D     81FA 00504200   cmp edx,425000                     ; CODE段后面的启始位置
01640023   ^ 72 E0           jb short 01640005
01640025   - EB FE           jmp short 01640025
01640027     8915 00016401   mov dword ptr ds:[1640100],edx
0164002D     60              pushad
0164002E     FFE2            jmp edx
01640030     90              nop
01640031     90              nop
01640032     90              nop
01640033     90              nop
01640034     90              nop
01640035     90              nop
01640036     90              nop
01640037     60              pushad
01640038     B8 00504200     mov eax,425000                     ;  IAT启始位置
0164003D     90              nop
0164003E     3910            cmp dword ptr ds:[eax],edx
01640040     75 20           jnz short 01640062
01640042     8B0D 00016401   mov ecx,dword ptr ds:[1640100]
01640048     C701 FF150000   mov dword ptr ds:[ecx],15FF        ; CALL或JMP调用(FF 15/FF 25)
0164004E     8941 02         mov dword ptr ds:[ecx+2],eax
01640051     61              popad
01640052     90              nop
01640053     8B15 00016401   mov edx,dword ptr ds:[1640100]
01640059     90              nop
0164005A     90              nop
0164005B     90              nop
0164005C   ^ EB BE           jmp short 0164001C
0164005E     90              nop
0164005F     90              nop
01640060     90              nop
01640061     90              nop
01640062     83C0 04         add eax,4
01640065     3D 34554200     cmp eax,425534                     ; IAT结束位置
0164006A   ^ 7E D2           jle short 0164003E
0164006C   ^ EB E3           jmp short 01640051

二进制:

BA 00 10 40 00 80 3A E8 75 12 8B 42 01 03 C2 83 C0 05 3D 00 80 0C 00 75 03 EB 0C 90 42 81 FA 00
50 42 00 72 E0 EB FE 89 15 00 01 64 01 60 FF E2 90 90 90 90 90 90 90 60 B8 00 50 42 00 90 39 10
75 20 8B 0D 00 01 64 01 C7 01 FF 15 00 00 89 41 02 61 90 8B 15 00 01 64 01 90 90 90 EB BE 90 90
90 90 83 C0 04 3D 34 55 42 00 7E D2 EB E3

在01640000处右键==>新建EIP

F9运行==>LordPE脱壳==>ImportREC修复

OEP填5000==>自动查找IAT==>获取输入表==>显示无效的==>把OEP改成[返回到 00C60294-基址=]860294 ==>抓取脱壳文件

下面的工作来了,慢慢享受,呵

OD打开内存查看

从00470000到01640000是要补的区断,

打开LordPE,选中进程,区域脱壳,选择00470000脱壳,复制地址00470000 

打开另一个LordPE==>PE编辑器==>选择修复好的文件==>区断==>右键==>从磁盘载入==>刚脱的文件

选中刚加的区断==>右键==>编辑区断==>

名称:00 
虚拟地址:00470000 - 基址400000  =70000

循环操作到01640000

====================================================================

经过N久的补区,完成,LordPE重建PE,注意重建选项PE只选择验证PE,[使PE有效]

运行一下程序,提示ERROR:111错误,证明我们没出错,暗笑中....

OD全部忽略异常!!

载入OD单步走,到00C60339 步入

00C60332     66:9D           popfw
00C60334     68 070AC600     push Unpack_.00C60A07
00C60339     E8 C2FC0500     call Unpack_.00CC0000  //F7步入
00C6033E     68 A6444200     push Unpack_.004244A6
00C60343     66:9C           pushfw

继续F8

到00CC0159 F7步入 

00CC0155     2BEE            sub ebp,esi
00CC0157     2BEF            sub ebp,edi
00CC0159     FFD5            call ebp     //F7步入
00CC015B     EB 01           jmp short Unpack_.00CC015E
00CC015D     9A 2EEB019A 64F>call far FF64:9A01EB2E

F8单步,看到下面的

009F8A66     8B40 34         mov eax,dword ptr ds:[eax+34]     ; Unpack_.00C30000
009F8A69     FFD0            call eax
009F8A6B     2945 0C         sub dword ptr ss:[ebp+C],eax
009F8A6E     8B45 0C         mov eax,dword ptr ss:[ebp+C]

这里就是我们可爱的Route check了

选上,用SYSCOM大侠的办法,二进制粘贴 90 90 90 8B 44 24 58 83 E8 05 90

保存,运行,还是出现ERROR:111错误,,,重新来过,还是这样,,,,不知道怎么搞了!!~大侠帮下忙

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶上去,顶到问题解决为止
2009-5-10 14:55
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶上去,顶到问题解决为止
2009-5-12 23:20
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
顶上去,顶到问题解决为止
2009-6-1 13:29
0
游客
登录 | 注册 方可回帖
返回