第30课 驯服大鳄鱼Armadillo.docx

上传人:b****3 文档编号:4194547 上传时间:2023-05-06 格式:DOCX 页数:14 大小:242.34KB
下载 相关 举报
第30课 驯服大鳄鱼Armadillo.docx_第1页
第1页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第2页
第2页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第3页
第3页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第4页
第4页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第5页
第5页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第6页
第6页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第7页
第7页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第8页
第8页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第9页
第9页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第10页
第10页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第11页
第11页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第12页
第12页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第13页
第13页 / 共14页
第30课 驯服大鳄鱼Armadillo.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第30课 驯服大鳄鱼Armadillo.docx

《第30课 驯服大鳄鱼Armadillo.docx》由会员分享,可在线阅读,更多相关《第30课 驯服大鳄鱼Armadillo.docx(14页珍藏版)》请在冰点文库上搜索。

第30课 驯服大鳄鱼Armadillo.docx

第30课驯服大鳄鱼Armadillo

第30课驯服大鳄鱼Armadillo

今天讲解如何脱armadillo(英语的意思是鳄鱼)壳,这个壳是著名的猛壳之一,和大S的asprotect齐名。

软件的网站是

图30-1mm_dillodie程序界面

Armadillo的基础就是单进程标准版(Standard)。

Armadillo很多的花样(也是它的特色),如双进程(就是Debugblocker,一回事)、CopyMemII、Nanomites、ImportElimination、StrategicCodeSplicing等,将花样逐个去掉后,最终还是要回归到单进程标准版。

所以,这节很重要,而且必会,重点掌握。

否则,后面的就免谈了。

很多人,一提到大鳄鱼壳,就非常害怕,特别没有信心,缺乏自信,就被它吓倒了。

其实。

它就像北京世界公园表演的鳄鱼一样,你可以把脖子伸到它的张开的长嘴中怡然自得。

下面将详细地讲解ollydbg手动脱壳armadillo的步骤。

例一UnPackMe_Armadillo4.44.a.exe4.44标准版单进程

第-步:

侦测它的花样所用软件Armadillofindprotected1.3简称ArmaFP。

界面如图30-2:

图30-2ArmaFP程序界面

用它侦测我们的目标程序,侦测结果如图30-3:

图30-3ArmaFP侦测目标程序

可以看到,这个就是标准版的。

第二步:

寻找入口点oep

配置ollydbg,忽略所有一切异常,调试选项如图30-4所示。

IsDebugPresent插件点hide。

图30-4ollydbg调试选项设置

★方法一:

按照前面教程介绍的,代码段内存访问断点法。

不要对我说你不会啊!

我会很失望的。

Alt+M按图30-5对code段下内存访问断点

图30-5内存访问断点

按钮,出现异常,shift+F9,停在下面

00CD00818B12movedx,dwordptrds:

[edx]

再按

按钮,停在图30-6所示:

图30-6oep到站

Oep为:

4271B0,记下来,以后要用到。

★★方法二:

CreateThread断点法

重新载入目标程序

命令行插件中输入bpCreateThread回车,断点就设好了。

按一次

按钮

提示异常,shift+F9,停在下面

7C810637kernel32.CreateThread8BFFmovedi,edi

7C81063955pushebp

7C81063A8BECmovebp,esp

再按一次

按钮,如有异常就shift+F9,停在下面,堆栈窗口如图30-7所示:

图30-7堆栈窗口

命令行插件中输入bcCreateThread回车,断点就清除了。

按一次ctrl+F9,来到图30-8所示。

图30-8ctrl+F9就是一个循环圈,向下的第一个retn

按一下F8(或按

)来到图30-9:

图30-9跳出循环,来到这里

按一次ctrl+F9,来到图30-9下方所示的retn那一行,即CBC732行。

按一下F8(或按

)来到下面:

00CCFFF359popecx

00CCFFF4BEE80BCE00movesi,0CE0BE8

00CCFFF98BCEmovecx,esi

00CCFFFBE82C8DFDFFcall00CA8D2C

向下寻找两个离得很近的callecx如图30-10:

图30-10点住CD00F9行按F4

第二个callecx行关键,F4来到后ecx装的值就是oep=4271B0按F7即可(或)进入

和图30-6所示的相同。

这么简单,你学会了吗?

需要说明的是:

armadillo4.xx版关键是这两个callecx;

armadillo3.xx版关键则是一个calledi。

据此,也可以判断你手脱的armadillo的版本。

第三步:

寻找magiccall众里寻他千XX蓦然回首那人却在灯火阑珊处

来到oep后,如图30-6,定位向下的第一个call[××××],如图30-11:

图30-11定位4271D6行,跟随内存窗口

图30-12内存窗口选定黄色所示字节,设硬件写入断点

设好后,重新载入目标程序。

如图30-13:

图30-13重新载入目标程序,这是第二次载入

按一次

按钮,出现异常,shift+F9跳过,来到图30-14

图30-14第一次停在这里

77×××××是通用模块,不是我们所关心的程序自己的领空,继续按一次

按钮,来到图30-15:

图30-15第二次停在这里

有点意思了,向上寻找msvcrt._stricmp,如图30-16所示:

图30-16magiccall所在位置

找到magiccall所在位置后,命令行插件处输入hd回车,弹出如图30-17所示的界面:

图30-17清除原来设置的硬件写入断点

图30-18magiccall所在行设硬件执行断点

第四步:

修改magiccall并来到oep

重新载入程序(这是第三次载入程序),出现异常,shift+F9跳过,来到CCCB0A,按F7键进入此call,如图30-19:

图30-19修改点所在行

修改后如图30-20所示:

图30-20C3伺候

命令行插件处输入hd回车,弹出如图30-21所示的界面:

图30-21清除设置在magiccall行的硬件执行断点

Ctrl+G,填入oep,如图30-22:

图30-22快速定位

点确定后如图30-23,在4271B0行设置硬件执行断点

图30-23oep所在行设硬件执行断点

按钮,被断。

命令行插件处输入hd回车,清除原来设置的硬件执行断点

总结:

载入目标程序一次,找到oep;设硬件写入断点,载入目标程序第二次;清断点,找到magiccall,设硬件执行断点,载入目标程序第三次;清断点,修改C3,设oep处的硬件执行断点;清断点,到站。

剩下的就是dump和修复输入表了。

前面的课程已经讲得很多了,此处不详细讲了。

图30-24用lordpe软件dump程序,ollydump插件不行

图30-25选定程序,importreconstructor填好oep,点IATAutoSearch,点Getimports

点ShowInvalid按钮,如图30-26,cut掉无效的指针

图30-26cut掉无效的指针

点FixDump按钮即可。

这时的dumped_.exe已经能完美运行。

脱壳后的程序很大,为1.3M,包含很多的armadillo垃圾代码。

主要是.text1、.adata、.data1和.pdata这四个区段。

如图30-27所示:

图30-27armadillo垃圾区段图示

用lordpe的peeditor,如图30-28,依次删掉4个区段头

图30-28菜单操作示意

点save按钮保存。

Options选项按图30-29设置

图30-29Options菜单选项

如图30-30rebuildPE,变为原来的31%,只有417k。

图30-30图示

此时,用PEiD侦壳脱壳文件会显示“Armadillo 1.xx-2.xx”,用16进制编辑器(WinHex或UltraEdit32)把PE Header+0X1A和0X1B处MajorLinkerVersion、MinorLinkerVersion的53、52清00就行了。

补充:

第2步寻找oep中,还有第3种方法,速度也很快,也很好使,推荐给大家。

Ollydbg载入目标程序

命令行插件中输入bpGetCurrentThreadId[ESP]<10000000回车

F9运行程序,提示异常,shift+F9,跳过

继续F9运行程序,提示异常,shift+F9,跳过,来到堆栈窗口如图30-31所示:

图30-31堆栈窗口

bcGetCurrentThreadId清除断点,alt+F9返回程序领空,如图30-32

图30-32alt+F9返回

按一次ctrl+F9,按一次F8,如图30-33

图30-33

Ctrl+S在当前位置下搜索命令序列:

callecx

movdwordptrss:

[ebp-1c],eax

旧版本是大括号中是ebp-4,如图30-34

图30-34查找快速定位

找到后,点住,按F4,按F7即来到入口点,参看图30-10、图30-6。

最最重要的东西学完了,牛刀小试一把,下面来看双进程(即Debugblocker)。

双进程已经被研究透了,只需写入一些代码即可拆解为单进程。

参见附件的ArmMutex.txt。

也没几行,其实很简单,我们重复地写它也没意思。

载入或运行双进程程序,在lorpe或importreconstructor中可以看到两个一模一样的程序。

用ollyscript插件载入脚本ArmMutex.txt后,再看,只看到一个程序在运行。

变成单进程了,用刚刚学到的蹂躏它吧!

作业运用几种不同方法手脱所附的3个程序并做出动画教程寄给我。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2