windows xp 下手动脱壳工具
超级巡警虚拟机自动脱壳机(vmunpacker)v1.3
本工具完全基于虚拟机技术,对各种已知未知壳进行脱壳处理,适合病毒分析中对加壳的木马样本进行脱壳处理。由于所有代码均运行在虚拟机中,不会对系统造成任何危害。本版为第一个正式公开版本,目前内部增强版使用超级巡警的unpack.avd库,可识别更多种各类加壳程序,具备更多的脱壳代码。详见压缩包中的说明。
寻木马脱壳工具!!!!!!
我倒,你还没有用杀毒软件就敢上网,人才^_^
我给你介绍几种,你参考一下(声明,不是我写的,是我引大侠的):
转贴一篇在龙族里面转贴的文章吧,写的很好。
[转贴]绝对值得一看的杀毒软件和防火墙评论
最近经常有网友发消息问我,到底哪个哪个杀毒软件最厉害,哪个杀毒软件售价最高?呵呵,诸如此类的问题老实说我也无法做出肯定的答复。我就随便谈一些我个人的见解。世界上公认的比较著名的杀毒软件有卡巴斯基,F-SECURE,MACFEE,诺顿,趋势科技,熊猫,NOD32,AVG,F-PORT等等。其中卡巴,macfee,诺顿又被誉为世界三大杀毒软件!每个杀毒软件都有自身的优势,当然也有不足之处!
比如卡巴斯基的杀毒能力确实很强,对的起排名世界第一的称号,但是监控方面却存在不足,而且在内存占用方面始终令人头疼。Macfee的系统监控恰恰是做的最好的。NOD32的扫毒速度最快,内存占用方面最少,全球获奖无数,因而成为微软御用4年的杀毒软件也绝非空穴来风。熊猫可能大家以为是中国的,其实也是洋货啦,杀毒理念和模块最先进,可惜老是提示你要重新激活,所以破解的不大完美!诺顿大家很熟悉,老实说诺顿的广告宣传还真是不错的,但是大家注意,别看广告,看疗效!当诺顿屡次告诉你XX病毒被隔离,无法清除时,你是否感到厌倦了呢?当然诺顿企业版要比个人版本的杀毒能力更强悍,建议大家使用9.0的,最新10.0占用资源有点大,不算完美。F-SECURE可能知道的人很少,别说用的人了,呵呵。我自己现在用的杀软就是这款,其实这款杀毒软件名气是相当响的。来自芬兰的杀毒软件,集合AVP,LIBRA,ORION,DRACO四套杀毒引擎,其中一个就是Kaspersky的杀毒内核,而且青出于蓝胜于蓝,个人感觉杀毒效率比Kaspersky要好,对网络流行病毒尤其有效。在《PC Utilites》评测中超过Kaspersky名列第一。该软件采用分布式防火墙技术。f-secure 曾经超过Kaspersky,排名第一,但后来Kaspersky增加了扩展病毒库,反超f-secure 。鉴于普通用户用不到扩展病毒库,因此f-secure还是普通用户很不错的一个选择。所以我用下来的感觉就是F-SECURE的综合能力可以排第一名!但是这个软件也有不足,就是进程太多,要近15个进程,呵呵,谁叫它有四套杀毒引擎呢?不过也够安全吧。进程虽多,却一点不觉得卡!
在此不得不提起国产杀毒软件,国产杀毒软件也有很多用户群,个性化的界面也赢得了很多用户的青睐。比如瑞星的那个小狮子就蛮可爱的,做个桌面宠物也不错。但是有很多人会说,国产的技术不行,靠不住的。呵呵,其实我倒不这么认为!国产杀毒软件我最喜欢的就是KV2005,江民的东西还是老牌子,杀毒监控实力不俗。瑞星和金山的起步晚一些,有些地方做的还是不够理想,但毕竟是在不断进步,希望能越做越好,给中国人也争光一把,哈哈。也许有人会说实际的杀毒能力说明一切,金山,瑞星和卡巴比就是垃圾等等。呵呵,那你就错了,如果说卡巴能杀掉这个病毒,金山杀不掉,就说明卡巴强于金山?反过来金山能杀掉这个病毒,卡巴无法槌鲈趺此悖拷鹕角坑诳ò停亢芗虻ザ钜桓隼�樱�蠹铱梢匀ネ�舷略匾桓?005年病毒测试包样本,是个压缩包文件,里面大概有26个病毒样本,试试你的杀软吧,呵呵,江民,金山,瑞星兵不血刃的杀光了所有病毒,再看看卡巴啊,这次傻了吧,所以说每个杀毒软件都有自己的长处,不能一拍子否定。
还有的朋友问我一个杀毒软件保险伐,要不要装两个来个双保险,呵呵,对于这个我觉得是可行的,但是前提是你对杀毒软件的各项设置要比较了解而且自己的电脑配置要高档点,否则不是系统容易崩溃就是电脑被两个杀毒软件拖垮的。比较典型的例子就是卡巴斯基+KV2005的组合,很显然卡巴系统监控的不足由KV2005来弥补。卡巴只负责杀毒即可了。但是这个豪华组合要牺牲很多内存,你电脑够劲的话可以试试。另外卡巴加NOD32也是不错的搭配,NOD32查毒和监控方面都不错,而且查毒速度奇快,内存占用很小,这样你可以用NOD32进行查毒,大家都知道卡巴的查毒速度是很慢的,因为病毒库多啊,每个文件都要那13W病毒库去套,能不慢嘛!
有的朋友关心哪个杀毒软件病毒库多哪个就牛,呵呵,大家都以为卡巴病毒库很多是伐,现在大概13万4千左右吧,但是面对罗马尼亚的杀软BitDefender Professional近20W的病毒库,卡巴一边凉快去吧。所以BitDefender Professional在2005年一些网站的测试中取得过第一名的成绩。但是病毒库多并不能说明问题,实际杀毒能力BitDefender Professional并没有比卡巴更好,所以这个也是大家理解的误区!有人认为卡巴病毒库升级极其迅速所以最牛,虽然卡巴每小时都有升级,很频繁,但是很多病毒库都非最终版,也就是很容易出现误报现象,所以建议大家到周末的时候再升级自己的卡巴,因为周末是卡巴整理一周病毒库,删除错误病毒库的时候。 �
还有有的朋友认为杀毒软件只要杀毒厉害就是一流的,其实这种观点我认为也不对,比如macfee,它其实杀毒并没有怎么厉害,肯定没有卡巴那么野蛮,但是为什么它也拥有广泛的用户群,有很好的口碑,很显然macfee的监控做的很完美,可以说滴水不漏,监控这么好的杀软我想杀毒能力稍微弱点又有何妨呢?因为第一道防线病毒都无法逾越的话不就是最大的成功么?反观卡巴杀毒是厉害,但是恰恰是由于它监控的不足,使病毒可以入侵,但鉴于杀毒能力很牛,所以第二道防线病毒就通不过了,这样逆向思考或许就能想通了!
许多的反木马程序中,Ewido 是最好的。国内的木马x星等和它比简直是小儿科了。最近在上的测试里表明,它可以有效地检测出多形态和进程注入式木马,这些甚至完全不能被像诺顿和AVG等杀毒软件所查杀。不过它没有TDS-3 或Trojan Hunter有效.但TDS-3目前还没推出支持中文操作系统的版本,Trojan Hunter是英文的没汉化版。但对于个人而言Ewido足够强大了,和kaspersky结合使用加上ZoneAlarm防火墙,可以使得系统坚若磐石。推荐所有没有安装反木马扫描器的个人计算机用户下载这个软件,并每周定期扫描。我猜你可能在你会为所得到的结果感到惊讶。
下面的话真的很不错,我就是听了他的话,所以我现在上网很安全:
如果每个人都用卡巴+za+ewido,,给系统打齐补丁,,再下个qq专杀,
我敢保证,不出半年,在反病毒区问问题的朋友减少50%,到那时个个没中毒,早把这忘了!!!
下载这些软件时,不要直接点击,而是点击右键的“使用迅雷下载”
“(正常模式下无法清楚的病毒,进入安全模式试一下!!!)”
万能脱壳工具如何使用
问题一:软件破解有没有通用万能的脱壳的好工具?asprotect壳有什么工具可以脱掉? (一).壳的概念
作者编好软件后,编译成exe可执行文件。 1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名等,即为了保护软件不被破解,通常都是采用加壳来进行保护。 2.需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩, 3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
(二).加壳软件最常见的加壳软件ASPACK ,UPX,PEpact 不常用的加壳软件WWPACK32;PE-PACK ;PETITE ;NEOLITE
(三).侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。 1.侦测壳的软件fileinfo.exe 简称fi.exe(侦测壳的能力极强) 2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒) 推荐language2000中文版(专门检测加壳类型) 3.软件常用编写语言Delphi,VisualBasic(VB)---最难破,VisualC(VC)
(四)脱壳软件。 软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱壳和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。
加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62 ,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考: 脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程是:查壳-寻找OEP-Dump-修复 找OEP的一般思路如下: 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的popad后就能到入口,跳到入口的方式一般为。 我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。
常用脱壳工具: 1、文件分析工具(侦测壳的类型):Fi,GetTyp,peid,pe-scan, 2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid 3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件编辑工具:PEditor,ProcDump32,LordPE 5、重建Import Table工具:ImportREC,ReVirgin 6、ASProtect脱壳专用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只对......
问题二:软件如何脱壳,用什么软件脱壳 首先你要检查一下加的什么壳,要是你检测时候发现是VC++写的,那就说明没加壳,自然就不需要脱壳。用什么加的壳,先PEid查看一下,然后再去找专门的脱壳工具,一旦检测出壳的种类,就可以脱壳了。
问题三:万能脱壳工具QuickUnpack怎么脱壳 (QuickUnpack)使用方法
1、点击【打开文件】选择要脱壳的文件
2、点击【连接进程】选择要连接的进程和模板
3、点击【完全脱壳】开始脱壳
问题四:软件破解脱壳法 什么是脱壳技术?
在一些电脑软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像电脑病毒和自然界的病毒一样,其实都是命名上的方法罢了。从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。
(一)壳的概念:作者编好软件后,编译成exe可执行文件。
1.有一些版权信息需要保护起来,不想让别人随便改动如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2.需要把程序搞的小一点,从而方便使用。于是需要用到一些软件,它们能将exe可执行文件压缩。
3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。
(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEpact 不常用的加壳软件WWPACK32;PE-PACK;PETITE NEOLITE
(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。
1.侦测壳的软件 fileinfo.exe 简称 fi.exe (侦测壳的能力极强)。
2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒)推荐。language2000中文版(专门检测加壳类型)。
3.软件常用编写语言Delphi;VisualBasic (VB)最难破;VisualC (VC)。
(四)脱壳软件。
软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。
=======================================================================
加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,例如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进......
问题五:有没有万能的中文版脱壳机!怎么使用! 小生我怕怕工具包有你所要的,至于怎么用望自学成才。
问题六:软件脱壳工具有哪些 10分 常见的脱壳工具有两种:
1。OD自带脱壳插件
鼠标右键菜单,选择Dump debugged process-设置Entry Point-点击Dump
2.LordPE
LordPE进程列表中选择目标进程-鼠标右键菜单,选择完整脱壳;
脱壳步骤
查壳
使用PEID, PE-SCAN等查壳工具查壳
查找OEP
使用OllyDbg跟踪调试找到OEP
脱壳
右键使用OLLYDBG自带的脱壳插件
修复
脱下的程序如果不能执行,使用Import ReConstructor工具修复
问题七:万能脱壳工具QuickUnpack怎么脱壳 万能脱壳工具(QuickUnpack)使用方法
1、点击【打开文件】选择要脱壳的文件
2、点击【连接进程】选择要连接的进程和模板
3、点击【完全脱壳】开始脱壳
问题八:软件如何脱壳 步骤1 检测壳
壳的概念:
所谓“壳”就是专门压缩的工具。
这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。
壳的作用:
1.保护程序不被非法修改和反编译。
2.对程序专门进行压缩,以减小文件大小,方便传播和储存。
壳和压缩软件的压缩的区别是
压缩软件只能够压缩程序
而经过壳压缩后的exe、和dll等程序文件可以跟正常的程序一样运行
下面来介绍一个检测壳的软件
PEID v0.92
这个软件可以检测出 450种壳
新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。
另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。
支持文件夹批量扫描
我们用PEID对easymail.exe进行扫描
找到壳的类型了
UPX 0.89.6 - 1.02 / 1.05 - 1.24 - Markus Laszlo
说明是UPX的壳
下面进行
步骤2 脱壳
对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。
脱壳成功的标志
脱壳后的文件正常运行,功能没有损耗。
还有一般脱壳后的文件长度都会大于原文件的长度。
即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。
关于脱壳有手动脱壳和自动脱壳
自动脱壳就是用专门的脱壳机脱 很简单 按几下就 OK了
手动脱壳相对自动脱壳 需要的技术含量微高 这里不多说了
UPX是一种很老而且强大的壳 不过它的脱壳机随处就能找到
UPX本身程序就可以通过
UPX 文件名 -d
来解压缩 不过这些需要的 命令符中输入
优点方便快捷 缺点DOS界面
为了让大家省去麻烦的操作 就产生了一种叫 UPX SHELL的外壳软件
UPX SHELL v3.09
UPX 外壳程序!
目的让UPX的脱壳加壳傻瓜化
注:如果程序没有加壳 那么我们就可以省去第二步的脱壳了,直接对软件进行分析了。
脱完后 我们进行
步骤3
运行程序
尝试注册
获取注册相关信息
通过尝试注册 我们发现一个关键的字符串
“序列号输入错误”
步骤4
反汇编
反汇编一般用到的软件 都是 W32Da ***
W32da *** 对于新手 易于上手 操作简单
W32Da *** 有很多版本 这里我推荐使用 W32Da *** 无极版
我们现在反汇编WebEasyMail的程序文件easymail.exe
然后看看能不能找到刚才的字符串
步骤5
通过eXeScope这个软件来查看未能在w32da *** 中正确显示的字符串信息
eXeScope v6.50
更改字体,更改菜单,更改对话框的排列,重写可执行文件的资源,包括(EXE,DLL,OCX)等。是方便强大的汉化工具,可以直接修改用 VC++ 及 DELPHI 编制的程序的资源,包括菜单、对话框、字符串表等
新版可以直接查看 加壳文件的资源
我们打开eXeScope
找到如下字串符
122,序列号输入错误
123,恭喜......
问题九:将一个软件脱壳之后该怎么能做呢、 脱壳后要修复 如果脱壳后 能正常使用 就不用修复了没有壳后 可以修改程序里面的标签、标题、文本等....可以用 c32 这个软件修改 查看原帖
求采纳
问题十:软件脱壳后用什么软件来修改 第一步,用fi243确定壳的类型,有自动脱壳工具的,用工具脱。否则第二步。
第二步,用bw2k确定程序的真正入口点OEP,不妨记为xxxx;若找不到,请试一试Softice + icedump: 使用Icedump 的/tracex 命令可能找到OEP 的地址;若还找不到,只能手动跟踪,看你的功力和运气了。
第三步,用trw装入(load)程序,下bpx xxxx,g。中断后用pedump命令脱壳,格式是
pedump c: est est.exe。不能中断时运行superbpm,选中erase,重复第三步操作。若脱出来的test.exe可以运行,则脱壳完毕,否则第四步。
第四步, 用peditor 修正test.exe,用Import REConstructor v1.2 beta2修复输入表,参照以下这篇文章
若还是不行,建议你用内存补丁或放弃暴破,去算注册号吧。
以下以S-Spline 2.04为例,讲一讲手动脱壳和修复import表的具体操作步骤。S-Spline 2.04
第一步,用fi243确定壳的类型。fi243没有GUI界面,是命令行程序,用法是这样:
c:fi243fi s-spline.exe。
Fi已经检测不出新版asprotect了,所以如果遇到检测不出的类型,就有可能是asprotect。接着往下做吧。
第二步,用bw2k确定程序的真正入口点OEP,
运行bw2k,面板上的entry point显示为00000000。按track钮,再运行s-spline.exe,程序界面出来之后,bw2k的面板上entry point显示为7e910,这就是入口点了。退出s-spline,我们又迈出了可喜的第二步。
第三步,运行SuperBPM,选中erase(默认为不选中),确保trw能够中断。
第四步,运行trw2k,按browse找到并选中s-spline.exe,按loader装入。下bpx 47e910,g。trw弹出时输入pedump c: est est.exe,退出trw(不退也行),但不要退出s-spline。在c: est下会找到test.exe。这个程序目前还不能运行,因为它的import表是被加密的。
第五步,用peditor修正test.exe。运行peditor,按browse找到test.exe,确定。再按sections,弹出一个窗口,显示每个section的信息。在窗口中点右键,在弹出菜单中选dumpfixer(RS=VS RO=VO),提示'DONE',这时可以关闭peditor了。
第六步,运行ImportREC1.2beta2,在Attach to an Active Process下拉框中选中s-spline.exe,然后在左下方OEP中输入7e910(就是EP-image base=47e910-400000),按IAT AutoSearch。出现对话框Found Something!=》
谁能详细解说下脱壳步骤和软件
【目标软件】WINME下的记事本
【加壳方式】Armadillo3.60 CopyMem-ll Debug-Blocker
【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6F
1.前言
为了练习脱壳,前一段时间从网上下了一个Armadillo3.60,然后给记事本加壳,当然本人初学破解,参考了很多大虾们的文章,然后自己模仿脱壳,可是当我修改了Magic Jump后,用401000段“内存断点”大法想到达那个盼望已久的OEP的时候,意外出现了:程序终止,退出!是我做法错误,然后我又实验了N遍,依然如此,为什么?随后又在论坛不停的搜索着,想找一些有关的知识,终于找到了(抱歉,忘记了作者是谁),而且解决了这个问题,为了使象我一样初学者不要重蹈覆辙,我决定详细的写一写,也许你认为很简单,那么请略过。
2.脱壳过程(分以下几步进行)
设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
(1)查找OEP
用OD中载入程序,下bp WaitForDebugEvent,F9运行,中断如下:
77E93A07 k 55 push ebp ====中断在此处,清除断点
77E93A08 8BEC mov ebp,esp
77E93A0A 83EC 68 sub esp,68
77E93A0D 56 push esi
77E93A0E FF75 0C push dword ptr ss:[ebp C]
查看堆栈窗口:
0012DAC0 00423D67 /CALL 到 WaitForDebugEvent 来自 NOTEPAD.00423D61
0012DAC4 0012EB84 |pDebugEvent = 0012EB84 ====注意这里
0012DAC8 000003E8 \Timeout = 1000. ms
在0012EB84所在的行上点击右键选“转存中跟随”。
然后再下bp WriteProcessMemory,F9运行
77E41A90 k 55 push ebp ====中断在此处
77E41A91 8BEC mov ebp,esp
77E41A93 51 push ecx
77E41A94 51 push ecx
77E41A95 8B45 0C mov eax,dword ptr ss:[ebp C]
看数据转存窗口:
0012EB84 01 00 00 00 40 07 00 00 ...@ ..
0012EB8C 5C 01 00 00 01 00 00 80 \ .. ..
0012EB94 00 00 00 00 00 00 00 00 ........
0012EB9C CC 10 40 00 02 00 00 00 ?@. ...
0012EBA4 00 00 00 00 CC 10 40 00 ....?@.
0012EBAC CC 10 40 00 00 00 00 00 ?@.....
红色字体的4010CC就是OEP,这样我们接着来第2步
(2)dump文件
现在我们重新用OD中载入程序,下硬件断点,he WaitForDebugEvent,F9运行,中断如下:
77E93A07 k 55 push ebp ====中断在此处,删除断点
77E93A08 8BEC mov ebp,esp
77E93A0A 83EC 68 sub esp,68
77E93A0D 56 push esi
77E93A0E FF75 0C push dword ptr ss:[ebp C]
Alt F9返回,搜索常数FFFFFFF8,来到(004243D6处):
0042438A \83BD D0F5FFFFcmp dword ptr ss:[ebp-A30],0====参考文章里提到的关键代码
00424391 . 0F8C A9020000 jl NOTEPAD.00424640====跳转到00424640处,因此在00424640处下断点
00424397 . 8B8D D0F5FFFF mov ecx,dword ptr ss:[ebp-A30]
0042439D . 3B0D E4454500 cmp ecx,dword ptr ds:[4545E4]
004243A3 . 0F8D 97020000 jge NOTEPAD.00424640
004243A9 . 8B95 44F6FFFF mov edx,dword ptr ss:[ebp-9BC]
004243AF . 81E2 FF000000 and edx,0FF
004243B5 . 85D2 test edx,edx
004243B7 . 0F84 AD000000 je NOTEPAD.0042446A
004243BD . 6A 00 push 0
004243BF . 8BB5 D0F5FFFF mov esi,dword ptr ss:[ebp-A30]
004243C5 . C1E6 04 shl esi,4
004243C8 . 8B85 D0F5FFFF mov eax,dword ptr ss:[ebp-A30]
004243CE . 25 07000080 and eax,80000007
004243D3 . 79 05 jns short NOTEPAD.004243DA
004243D5 . 48 dec eax
004243D6 . 83C8 F8 or eax,FFFFFFF8=====搜索来到这里,向上看
004243D9 . 40 inc eax
004243DA 33C9 xor ecx,ecx
004243DC . 8A88 802A4500 mov cl,byte ptr ds:[eax 452A80]
004243E2 . 8B95 D0F5FFFF mov edx,dword ptr ss:[ebp-A30]
004243E8 . 81E2 07000080 and edx,80000007
004243EE . 79 05 jns short NOTEPAD.004243F5
004243F0 . 4A dec edx
004243F1 . 83CA F8 or edx,FFFFFFF8
004243F4 . 42 inc edx
004243F5 33C0 xor eax,eax
004243F7 . 8A82 812A4500 mov al,byte ptr ds:[edx 452A81]
004243FD . 8B3C8D 60E244mov edi,dword ptr ds:[ecx*4 44E260]
00424404 . 333C85 60E244xor edi,dword ptr ds:[eax*4 44E260]
0042440B . 8B8D D0F5FFFF mov ecx,dword ptr ss:[ebp-A30]
00424411 . 81E1 07000080 and ecx,80000007
00424417 . 79 05 jns short NOTEPAD.0042441E
00424419 . 49 dec ecx
0042441A . 83C9 F8 or ecx,FFFFFFF8
0042441D . 41 inc ecx
0042441E 33D2 xor edx,edx
00424420 . 8A91 822A4500 mov dl,byte ptr ds:[ecx 452A82]
00424426 . 333C95 60E244xor edi,dword ptr ds:[edx*4 44E260]
0042442D . 8B85 D0F5FFFF mov eax,dword ptr ss:[ebp-A30]
00424433 . 99 cdq
00424434 . B9 1C000000 mov ecx,1C
00424439 . F7F9 idiv ecx
0042443B . 8BCA mov ecx,edx
0042443D . D3EF shr edi,cl
0042443F . 83E7 0F and edi,0F
00424442 . 03F7 add esi,edi
00424444 . 8B15 D4454500 mov edx,dword ptr ds:[4545D4]
0042444A . 8D04B2 lea eax,dword ptr ds:[edx esi*4]
0042444D . 50 push eax
0042444E . 8B8D D0F5FFFF mov ecx,dword ptr ss:[ebp-A30]
00424454 . 51 push ecx
00424455 . E8 FF1F0000 call NOTEPAD.00426459
0042445A . 83C4 0C add esp,0C
0042445D . 25 FF000000 and eax,0FF====从这里开始修改
00424462 . 85C0 test eax,eax
00424464 . 0F84 D6010000 je NOTEPAD.00424640
在0042438A处下 硬件执行 断点,F9运行到0042438A处,得到ebp-A30=12EB70,这样上述的修改地方修改为:
0042445D FF05 70EB1200 inc dword ptr ds:[12EB70]
00424463 90 nop
00424464 ^ E9 21FFFFFF jmp NOTEPAD.0042438A
把12EB70处置0,去掉所有断点,并在00424640处下断,F9运行,断住。好了,所有代码都强制解压完成。
运行LordPE,有2个关于NOTEPAD的进程,选择第2个,即可完全dump出来了。
(3)修复IAT表
因为Armadillo的壳使得ImportREC的"IAT AutoSearch"失效,所以必须确定IAT的RAV以及大小,为此我们用OD载入刚刚DUMP出来的文件,来确定IAT的RAV以及大小,载入之前先修改入口点为10CC,然后载入:
004010CC d 55 push ebp
004010CD 8BEC mov ebp,esp
004010CF 83EC 44 sub esp,44
004010D2 56 push esi
004010D3 FF15 F4734000 call dword ptr ds:[4073F4]====注意这里
004010D9 8BF0 mov esi,eax
我们可以随便找一个CALL入手确定IAT的RAV以及大小(不妨找看到的第一个CALL)。光标定位到数据转存窗口中,然后 Ctrl G,4073F4,可以看到:
004072E4 BE 7D 00 00 00 00 00 00 缄......
004072EC D7 23 DA 77 46 BA 3C 00 ?赵F?.
004072F4 F0 59 DA 77 CC 5E DA 77 餣赵蘜赵
..........(省略若干)
004073DC 7D 15 F5 77 90 9B 3C 00 } 鮳悰.
004073E4 03 38 E5 77 67 31 E5 77 8鍂g1鍂
004073EC 3C 51 E5 77 97 2D E5 77 Q鍂?鍂
004073F4 C7 C3 3C 00 45 9A E5 77 敲.E氩w====到达这里,由此处向上和向下看
004073FC 91 B2 3C 00 8D B8 3C 00 懖.嵏.
00407404 50 88 3C 00 CE 8A 47 77 P?.螉Gw
..........(省略若干)
00407504 EC 72 D1 77 11 9A D1 77 靣褀 氀w
0040750C 06 81 D1 77 D3 3D D1 77 布w?褀
00407514 37 89 3C 00 B3 22 32 76 7?.?2v
0040751C 39 DC 33 76 3B C2 32 76 9?v;?v
00407524 10 1D 34 76 D6 8B 32 76 4v謰2v
0040752C B7 44 33 76 70 1B 32 76 稤3vp 2v
00407534 8B 88 3C 00 00 00 00 00 媹.....
这样IAT的大小是终点-始点=00407530-004072EC=244,RVA=72EC。为什么是这样呢,我们看到很多77XXXXXX之类的,而到了00407534处是8B 88 3C 00,为了确定其是否在IAT内,我们可以在OD的CPU窗口内定位光标到401000处,然后Ctrl B,填入 34 75 40,结果搜索不到,而30 75 40能够搜索到,是JMP [407530],因此确定IAT的终点点是407530,用同样的方法可以确定起点点是4072EC。
好了,IAT的RAV以及大小确定了,现在就要修复IAT了,用OD再一次载入未脱壳的程序,bp DebugActiveProcess,F9断下。看堆栈窗口:
0012DAC4 00423BDB /CALL 到 DebugActiveProcess 来自 NOTEPAD.00423BD5
0012DAC8 00000324 \ProcessId = 324=====子进程句柄
0012DACC 0012FF2C
打开另一个OD附加324这个子进程。然后ALT+F9返回程序:
00433999 N - EB FE jmp short NOTEPAD.ModuleEntryPoint====中断在此处,还原代码
0043399B EC in al,dx
0043399C |. 6A FF push -1
0043399E |. 68 503C4500 push NOTEPAD.00453C50
还原00433999处代码代码,EB FE改为55 8B,接下来就要按照FLY等大虾们的方法了。在接下来的步骤中前一部分可以参考Fly的《壹次脱壳法——Armadillo 双进程标准壳 快速脱壳》,我们从Magic Jump,避开IAT加密开始,取消以前断点,下断:BP GetModuleHandleA 5,
77E59F98 /0F84 23060000 je kernel32.77E5A5C1====中断在此处,注意看堆栈
77E59F9E |FF7424 04 push dword ptr ss:[esp 4]
77E59FA2 |E8 55080000 call kernel32.77E5A7FC
77E59FA7 |85C0 test eax,eax
在这里中断若干次,注意堆栈窗口的变化,当出现:
......
0012BF20 00AAC807 返回到 00AAC807 来自 kernel32.GetModuleHandleA
0012BF24 00ABD6C8 ASCII "kernel32.dll"
0012BF28 00ABE67C ASCII "VirtualAlloc"
0012BF20 00AAC824 返回到 00AAC824 来自 kernel32.GetModuleHandleA
0012BF24 00ABD6C8 ASCII "kernel32.dll"
0012BF28 00ABE670 ASCII "VirtualFree"
0012BC98 00A9799B 返回到 00A9799B 来自 kernel32.GetModuleHandleA
0012BC9C 0012BDD4 ASCII "kernel32.dll"
然后Alt F9返回,
00A97995 FF15 C480AB00 call dword ptr ds:[AB80C4] ; kernel32.GetModuleHandleA
00A9799B 8B0D E011AC00 mov ecx,dword ptr ds:[AC11E0]====返回到这里
00A979A1 89040E mov dword ptr ds:[esi ecx],eax
00A979A4 A1 E011AC00 mov eax,dword ptr ds:[AC11E0]
00A979A9 393C06 cmp dword ptr ds:[esi eax],edi
00A979AC 75 16 jnz short 00A979C4
00A979AE 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C]
00A979B4 50 push eax
00A979B5 FF15 CC80AB00 call dword ptr ds:[AB80CC] ; kernel32.LoadLibraryA
00A979BB 8B0D E011AC00 mov ecx,dword ptr ds:[AC11E0]
00A979C1 89040E mov dword ptr ds:[esi ecx],eax
00A979C4 A1 E011AC00 mov eax,dword ptr ds:[AC11E0]
00A979C9 393C06 cmp dword ptr ds:[esi eax],edi
00A979CC 0F84 AD000000 je 00A97A7F====Magic Jump,修改为JMP
00A979D2 33C9 xor ecx,ecx
00A979D4 8B03 mov eax,dword ptr ds:[ebx]
修改了上面的Magic Jump后,清除所有断点,Alt M ,在401000上下 内存访问断点,F9运行,这次中断到了OEP,然后运行ImportREC,选择324这个进程,OEP填:10CC,RVA:72EC,SIZE:244,然后“Get Imports”,再按“Show Invalid”地址,剪掉修复抓取文件,程序能够正常运行,至此脱壳完毕 !第一次用OD脱壳,感觉就是爽,和Softice比起来,感觉OD脱壳很方便.
0条大神的评论