Armadillo穿山甲进阶(2009-04-13 23:14:36)
http://blog.sina.com.cn/s/blog_5f5742340100ctf6.html
Armadillo穿山甲进阶(2009-04-13 23:14:36)
遇到过Armadillo的朋友应该知道,它是有点变态的。。中文意思“穿山甲”,可想而知,是很难脱的。
首先介绍一下Armadillo的一些版本以及保护方式、线程情况吧
A:版本
B:保护方式
C:线程
上面三种特征都可以两两组合,或者是三三组合。。变化方式之多,可见一斑!下面我将做下总结!希望能够起到抛砖引玉的作用!
*******************************************************************************************
保护方式判断:如果你用脱标准壳的方法去脱不行的话,那么就很有可能是非标准版啦。
线程的判断:方法1、运行程序,打开系统的任务管理器,看看有几个同名进程咯。
方法2、运行程序,打开LordPE,同样是看看有几个同名进程。一个的话就是单进程,两个就是双进程。
*******************************************************************************************
脱壳前的准备:(*****为了节约时间,我在后面将不做说明了,大家要记住!*****)
1、OD设置忽略所有的异常,用隐藏插件隐藏OD!
2、思想准备:Armadillo对断点的检测非常严格,所以我们在设置断点的时候要尽量去使用“硬件执行”
3、概念准备:使用PEID的Armadillo的版本检测一般没那么准确,我倒是发现fi的版本检测还是要强一些
4、Magic Jump:跳转的跨越段一般比较大!(返回时机一定要对!)
5:返回的时机:1、返回的地址是系统领空
2、Shift+F9过程当中,时间缓冲比较大才停下(得自己体会一下)
*******************************************************************************************
吉祥天传世外挂 1.0.0.1
首先PEID查壳是Armadillo 3.78 -> Silicon Realms Toolworks,其实是4.X的版本,而且是个双线程的标准壳!
下面具体的步骤就不写了,就写一些重点吧!
我是在2000下操作的,不知道在XP下是不是好搞点,呵呵
忽略所有异常,手动添加C000001E,E06D7363异常。隐藏OD!
一、双变单(使程序把自己当成子进程运行)
bp OpenMutexA
Ctrl+G:00401000
00401000
00401001
00401002
00401007
00401009
0040100A
0040100B
00401010
00401011
00401012
60 9C 68 A0 FD 12 00 33 C0 50 50 E8 71 8D A8 77 9D 61 E9 74 8E A8 77
二、避开Anti
he OutputDebugStringA
中断2次!
选中%s%之类的字符,点右键->二进制->使用00填充
删除此断点!
三、Magic Jump,避开IAT加密
PS:很奇怪的就是用he GetModuleHandleA+5,却找不到Magic Jump!
bp GetModuleHandleA/he GetModuleHandleA
77E80B1A KE>
77E80B1B
77E80B1D
77E80B21
77E80B23
77E80B29
77E80B2C
001292A4
001292A8
001292AC
001292B0
001292A4
001292A8
001292AC
001292B0
00129008
0012900C
00129010
01055A99
01055A9F
01055AA2
01055AA7
01055AAA
01055AAC
01055AB2
01055AB3
01055AB9
01055ABF
01055AC2
01055AC7
01055ACA
01055AD0
01055AD2
01055AD4
01055AD6
01055AD8