首页
论坛
课程
招聘
请各位大哥赐教,脱Armadillo时远地址jmp与iat乱序问题
2004-10-20 12:25 6460

请各位大哥赐教,脱Armadillo时远地址jmp与iat乱序问题

2004-10-20 12:25
6460
PEid v0.92:Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks [Overlay]

是双进程,脱壳步骤如下:
1)找oep
bp OpenMutexA
在401000添加欺骗代码,避免产生子进程
he VirtualProtect
避免修改PE头
最后来到call edi,F7进入
这里就是oep,RVA:2a1938,dump下来

2)找iat
olldbg打开dump下文件,随便找了个附近的call xxxxxxxx,F7进入,来到jmp dword ptr ds:[xxxxxxxx],如下

00407598     FF25 14B77B01       jmp dword ptr ds:[17BB714]
0040759E     8BC0                mov eax,eax
004075A0     FF25 48B77B01       jmp dword ptr ds:[17BB748]
004075A6     8BC0                mov eax,eax
004075A8     FF25 CCB27B01       jmp dword ptr ds:[17BB2CC]
004075AE     8BC0                mov eax,eax
004075B0     FF25 08B47B01       jmp dword ptr ds:[17BB408]

iat首地址就在17BB714附近,但是17BB714超出dump文件的范围,这就是不是所谓的"远地址jmp",各位大哥这该怎么搞啊!!!

还有一点不懂的是:修改magic jmp,防止iat加密后iat表(从017badd0开始)很整齐,但是往后F8,发现壳又会用memmove()错4字节的搬移iat,使得iat变得很混乱,这是不是iat乱序啊?相应的话jmp dword ptr ds:[xxxxxxxx]的xxxxxxxx也要修改,这样不是很乱!真晕,各位大哥该怎么搞啊

文件下载:
ftp://211.96.225.114/XCyber/prtg4_139.rar

[公告] 欢迎大家踊跃尝试高研班11月试题,挑战自己的极限!

收藏
点赞0
打赏
分享
最新回复 (7)
雪    币: 209
活跃值: 活跃值 (14)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
yesky1 活跃值 5 2004-10-20 13:23
2
0
远地址跳转参见
http://grinders.withernsea.com/tutorials/file_info/download1.php?file=Armadillo_Antidumps_By_Eggi.rar

不过它的办法有些罗嗦,可以直接下断VirtualAlloc,查看申请地址值,如果比较大就需要注意了,返回后代码类似下面
00DE2612    6A 40           PUSH 40
00DE2614    68 00200000     PUSH 2000
00DE2619    FFB5 70E6FFFF   PUSH DWORD PTR SS:[EBP-1990]
00DE261F    FF35 3092DF00   PUSH DWORD PTR DS:[DF9230]
00DE2625    FF15 A0B1DE00   CALL DWORD PTR DS:[DEB1A0]               ; kernel32.VirtualAlloc
00DE262B    8985 78E6FFFF   MOV DWORD PTR SS:[EBP-1988],EAX
00DE2631    83BD 78E6FFFF 0>CMP DWORD PTR SS:[EBP-1988],0
00DE2638    74 33           JE SHORT 00DE266D
00DE263A    6A 40           PUSH 40
00DE263C    68 00100000     PUSH 1000
00DE2641    FFB5 70E6FFFF   PUSH DWORD PTR SS:[EBP-1990]
00DE2647    FF35 3092DF00   PUSH DWORD PTR DS:[DF9230]
00DE264D    FF15 A0B1DE00   CALL DWORD PTR DS:[DEB1A0]               ; kernel32.VirtualAlloc
00DE2653    8985 78E6FFFF   MOV DWORD PTR SS:[EBP-1988],EAX          //保存codesplit 首地址 在这里断下修改eax值到一较低地址
00DE2659    83BD 78E6FFFF 0>CMP DWORD PTR SS:[EBP-1988],0
00DE2660    74 0B           JE SHORT 00DE266D

iat乱序可以看看Ricardo Narvaja的教程203-208ARMADILLO WITH DESTRUCTION OF TABLE
不过它的iat最后使用了一段smc代码完成正常iat到乱序iat的转换
其实完全可以用一段简单脚本修改代码段,来修复iat函数的调用
有空我会整理一篇iat乱序的修复示例

codesplit现在没看到好的修复办法,那n重循环看起来就头痛。
雪    币: 60
活跃值: 活跃值 (105)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 活跃值 85 2004-10-20 13:44
3
0
http://grinders.withernsea.com/tuto...mps_By_Eggi.rar
无法下载,如果不大的话,麻烦兄弟传在这里
雪    币: 209
活跃值: 活跃值 (14)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
yesky1 活跃值 5 2004-10-20 13:58
4
0
汗,没注意到是个死链
Armadillo_Antidumps_By_Eggi
附件:Arm_Eggi.part1.rar 附件:Arm_Eggi.part2.rar
雪    币: 209
活跃值: 活跃值 (14)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
yesky1 活跃值 5 2004-10-20 14:05
5
0
Ricardo Narvaja的教程203-208ARMADILLO WITH DESTRUCTION OF TABLE
我用翻译软件转到英语了,凑合着看吧,好在Ricardo的教程里图比较多 :)

附件:arm203_208.part1.rar 附件:arm203_208.part2.rar 附件:arm203_208.part3.rar 附件:arm203_208.part4.rar
雪    币: 60
活跃值: 活跃值 (105)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 活跃值 85 2004-10-20 14:35
6
0
thanks  :D
期待兄弟的实例教程
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
XCyber 活跃值 2 2004-10-20 14:51
7
0
感激不尽
努力学习中...
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baby 活跃值 2004-10-21 09:55
8
0
好文章,可惜我不懂英文。哪位大侠有时间翻译一下
游客
登录 | 注册 方可回帖
返回