首页
社区
课程
招聘
[旧帖] [求助]IAT的手动修复问题----[已解决一楼问题] 0.00雪花
发表于: 2007-11-6 02:06 4634

[旧帖] [求助]IAT的手动修复问题----[已解决一楼问题] 0.00雪花

2007-11-6 02:06
4634
[求助]IAT的手动修复问题

1. 找到OEP后,第一个call 处F7步入:

004B21F0    55              PUSH EBP                                //    OEP!

004B21F1    8BEC            MOV EBP,ESP
004B21F3    83C4 F0         ADD ESP,-10
004B21F6    B8 801D4B00     MOV EAX,Loader.004B1D80
004B21FB    E8 1049F5FF     CALL Loader.00406B10       //  第一个call,F7步入

004B2200    A1 78634B00     MOV EAX,DWORD PTR DS:[4B6378]
004B2205    8B00            MOV EAX,DWORD PTR DS:[EAX]
004B2207    E8 D02EFBFF     CALL Loader.004650DC

2. F7步入后,仍是call,无奈尝试F8到下一个call再F7步入:

00406B10    53              PUSH EBX
00406B11    8BD8            MOV EBX,EAX
00406B13    33C0            XOR EAX,EAX
00406B15    A3 A0304B00     MOV DWORD PTR DS:[4B30A0],EAX
00406B1A    6A 00           PUSH 0
00406B1C    E8 2BFFFFFF     CALL Loader.00406A4C                     
                                                                ; JMP 到 kernel32.GetModuleHandleA
                                                             // F7再次步入
00406B21    A3 68764B00     MOV DWORD PTR DS:[4B7668],EAX
00406B26    A1 68764B00     MOV EAX,DWORD PTR DS:[4B7668]
00406B2B    A3 AC304B00     MOV DWORD PTR DS:[4B30AC],EAX
00406B30    33C0            XOR EAX,EAX
00406B32    A3 B0304B00     MOV DWORD PTR DS:[4B30B0],EAX
00406B37    33C0            XOR EAX,EAX
00406B39    A3 B4304B00     MOV DWORD PTR DS:[4B30B4],EAX
00406B3E    E8 C1FFFFFF     CALL Loader.00406B04

3. 进到以下地址:

00406A4C  - FF25 8437D800   JMP DWORD PTR DS:[D83784]               
                                                                  ; kernel32.GetModuleHandleA
                                                    // 惊喜,以为找到地址  D83784
00406A52    8BC0            MOV EAX,EAX
00406A54  - FF25 6C37D800   JMP DWORD PTR DS:[D8376C]               
                                                                  ; kernel32.LocalAlloc
00406A5A    8BC0            MOV EAX,EAX
00406A5C  - FF25 2435D800   JMP DWORD PTR DS:[D83524]               
                                                                  ; kernel32.TlsGetValue
00406A62    8BC0            MOV EAX,EAX
00406A64  - FF25 8030D800   JMP DWORD PTR DS:[D83080]               
                                                                 ; kernel32.TlsSetValue

4. OD转存区,CTRL+G,弹出输入框,选VA/API项,输入D83784,红字警告“未知标识符”!

请教各位大大,这是怎么回事呀,我该怎么做才能找到IAT地址呀???
顺便问一句,是不是IAT的开始地址和结束地址一般都是以00 00 00 00 做界定呀?

多谢指点,期盼早日,哦,不,早秒解决!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=poler;378393][求助]IAT的手动修复问题

顺便问一句,是不是IAT的开始地址和结束地址一般都是以00 00 00 00 做界定呀?

004B21F1    8BEC      ...[/QUOTE]

我记得在哪儿看过,找到iat中的一个函数,就在数据窗口中跳到相应的位置,看一下前后的分界限
如果有很多0的话,基本说明这内部就是iat了,但是每个模块,如user.dll与kernel.dll中的导出函数之间会有一组00000000

大概是这样的
2007-11-6 10:11
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
3
"输入D83784"
在OD中输入十六进制的时候,若第一位是字母,需要在前面加一个零。
2007-11-6 10:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
非常感谢 救世猪、无聊的菜鸟指点!
现在可以在转存区找到相应地址了,可又有问题了。。。。

转存区内容是:

00D83778  00C1746A
00D8377C  77C42378  GDI32.CreateBitmap
00D83780  77D16A5F  USER32.EnumWindows
00D83784  77E5AD86  kernel32.GetModuleHandleA   // 直接找到这个地址
00D83788  77D17964  USER32.IsZoomed
00D8378C  00C1746C

上翻下翻后确定IAT开始地址为00D83778,结束地址为00D8378C,得出RVA和SIZE(好小啊,才14),可填进Import Fix(包括OEP),自动找IAT,什么有用信息都没找到,获取输入表,又说无法读取此进程内存?!

请教为什么不能用Import Fix自动找IAT呢,而我换了几个函数调用来确定IAT,SIZE都好小,填进Import Fix都是说无法读取此进程内存?!

感谢大大们,先谢了!
2007-11-6 16:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不好意思,忘记补充壳的类型了,是Armadillo壳,用Armafp查询结果如下:
▲ 目标经Armadillo保护
保护系统授权等级(专业版)
【程序所使用保护模式】
标准保护 或 最小保护模式
使用 输入表乱序 程序保护模式
使用 策略代码衔接 程序保护模式
【备份密钥设置】
固定的备份密钥
【程序压缩设置】
最好/最慢地压缩方式
【其它保护设置】
▲ 版本号 4.40

我看过很多大大们的教程如何破这种标准壳,可每篇教程都是最后直接用Import Fix自动找IAT,我的却总找不到,输入RVA和SIZE也还是不行。。。。而且用ArmInline修复了也不行。。。。
请教是我哪步做错了呢?还是少做了或多做了哪步?
2007-11-6 16:28
0
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
不是吧
无法读取?
此时这个进程还打开着吗?
2007-11-6 19:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
TO:救世猪大侠

是的,OD还是开着的,如果关掉了还可以解释为IAT跳转了。。。
所以非常郁闷,都破这软件几天了!
希望能得到指点!
2007-11-6 21:16
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
8
你那个,你找得那4个确实是导入的API,但是明显已经被乱序过了,上面和下面很多都是加密过的API间接调用,参考教程修复。
另外ImportREC的自动搜索大部分时间都不是很好用。一切还是得靠自己。。。
ImportREC说没有找到,那么下面的IAT起始RVA和大小都是无效的,当你点击获取的时候,它取读取这些无效的内存当然无法读取。
2007-11-11 09:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
唉 修复好难啊
看着教程拿教程的范例来学似乎都没问题了
自己找不软件就出问题了。。
2007-11-14 23:18
0
游客
登录 | 注册 方可回帖
返回
//