PECompact 2.x 完美脱壳法
软件破解脱壳法
软件破解脱壳法什么是脱壳技术?在一些电脑软件里有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行拿到控制权,然后完成它们保护软件的任务。
就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。
就像电脑病毒和自然界的病毒一样,其实都是命名上的方法罢了。
从功能上抽象,软件的壳和自然界中的壳相差无几。
无非是保护、隐蔽壳内的东西。
而从技术的角度出发,壳是一段执行于原始程序前的代码。
原始程序的代码在加壳的过程中可能被压缩、加密……。
当加壳后的文件执行时,壳这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。
软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。
关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。
(一)壳的概念:作者编好软件后,编译成exe可执行文件。
1.有一些版权信息需要保护起来,不想让别人随便改动如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2.需要把程序搞的小一点,从而方便使用。
于是需要用到一些软件,它们能将exe可执行文件压缩。
3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK;PETITE NEOLITE(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。
1.侦测壳的软件 fileinfo.exe 简称 fi.exe (侦测壳的能力极强)。
2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒)推荐。
language2000中文版(专门检测加壳类型)。
PEID查壳脱壳使用教程(图文)及程序汉化方法
PEID查壳脱壳使⽤教程(图⽂)及程序汉化⽅法进⾏软件汉化,第⼀步就是要查壳,看看软件是否加壳,加的⼜是什么壳。
下⾯介绍PEID查壳软件使⽤⽅法。
PEID简介:PEiD是⼀款著名的查壳⼯具,其功能强⼤,⼏乎可以侦测出所有的壳,其数量已超过470 种PE⽂档的加壳类型和签名,可以探测⼤多数PE⽂件封包器、加密器和编译器。
⾸先:运⾏PeiD,如图:图1 PEiD主界⾯第⼆步,定位要查壳的软件,如图2。
点击“打开”⽂件后就会出现如图3所⽰的界⾯。
说明该软件是加了Nullsoft PiMP Stub壳的,可以⽤专门脱Nullsoft PiMP Stub脱壳机来脱壳,也可能⽤⾃动脱壳机⽆法脱壳(版本更新等原因),可以选择⼿动脱壳。
PEID的扫描模式正常扫描模式:可在PE⽂档的⼊⼝点扫描所有记录的签名;深度扫描模式:可深⼊扫描所有记录的签名,这种模式要⽐上⼀种的扫描范围更⼴、更深⼊; 核⼼扫描模式:可完整地扫描整个PE⽂档,建议将此模式作为最后的选择。
PEiD内置有差错控制的技术,所以⼀般能确保扫描结果的准确性。
前两种扫描模式⼏乎在瞬间就可得到结果,最后⼀种有点慢,原因显⽽易见。
插件应⽤最常⽤的插件就是脱壳。
Peid的插件⾥⾯有个通⽤脱壳器,能脱⼤部分的壳,如果脱壳后import表损害,还可以⾃动调⽤ImportREC修复improt表。
点击“=>”打开插件列表。
如图:根据插件列表,还可以专门针对⼀些壳脱壳,效果⽐通⽤脱壳器会好。
程序汉化如果程序没有加壳,或者脱壳好后,就可以⽤专门的汉化⼯具进⾏汉化了。
汉化时应选择适合的⼯具进⾏汉化,⽐如Microsoft Visual C++6.0编写的软件可以选⽤或来汉化;⽽Visual Basic 编写的软件就要⽤来汉化。
所以不同语⾔编写的软件要选⽤相应的汉化⼯具进⾏汉化。
压缩壳和低强度加密壳的脱壳小结及简易脱壳法
三、OEP内存断点万能脱壳法简化变形的OD脚本
OEP内存断点万能脱壳法经过简化变形后其操作变得非常简单机械,我们可以用一个很简单的ollydbg脚本来使其自动执行脱壳,脚本如下:
/*
//////////////////////////////////////////////////
All Compress packer Unpacking script
Dasm : 6A 00 E8 C5
BC++ : EB 10
7、取消内存断点,反汇编窗口Ctrl+G填入PEiD侦测到OEP,在OEP处下断,F9运行,到达OEP
8、Dump it 运行,出错的话用ImportREC修复即可,一般都可修复的。
二、OEP内存断点万能脱壳法脱壳机理
我们知道的,壳如果要把原来加密或压缩的代码运行起来的话就必须要解压和解密原来的代码,这一个过程我们可以将他看做是代码的内存写入当我们用ollydbg载入目标程序,数据窗口Ctrl+G转到OEP地址时往往看到的数据全部是0,这说明OEP处的代码被压缩或加密了。(有些时候可以看到有代码,但这些代码不是6种常见语言的入口特征代码,这说明OEP处肯定是被加密了,被壳的加密代码替换了。)基于这样的理解我们可以在数据窗口OEP处设置内存访问断点,F9运行,观察内存数据窗口OEP处数据变化,内存数据变化说明OEP处代码在被解密,当我
Author: sxssl
Email : sxssl@
OS : WinXP sp2,Ollydbg 1.1,OllyScript v0.92
Date : 2008-1-20
Config: Ignore all exceptions
PE文件中脱壳技术的研究
第27卷第9期 计算机应用与软件Vol 127No .92010年9月 Computer App licati ons and Soft w are Sep.2010PE 文件中脱壳技术的研究李 露 刘秋菊 徐汀荣(苏州大学计算机科学与技术学院 江苏苏州215006)收稿日期:2009-01-07。
李露,硕士生,主研领域:网络安全,信息技术。
摘 要 对PE (Portable Executable )文件进行加壳是保护软件的有效手段,但恶意程序也会通过加壳来保护自己。
作为一名病毒分析师或软件安全分析员,只有先将其脱壳,才能进行彻底的分析。
以W indows 记事本程序为实例,首先分析了PE 文件结构及其加壳原理,其次阐述了脱壳的一般步骤,然后从压缩壳和加密壳的角度,重点探讨了脱壳技术的原理和方法。
最后对伪装壳和多重壳及程序自校验进行了探讨和分析。
关键词 PE 加壳 脱壳 伪装壳 多重壳 自校验O N UNPACK I NG TECHNOLO GY FO R PE F I L ESL i Lu L iu Q iuju Xu Tingr ong(School of Co m puter Science and Technology,Soocho w U niversity,Suzhou 215006,J iangsu,China )Abstract Packing Portable Executable (PE )files is an effective mean t o p r otect s oft w are,but mal w are can als o use packing t o p r otect the m selves .A s a virus analyst or a s oft w are security researcher,you must unpack the mal w are first,then can you analysis the m in detail .Taking the notepad p r ogra m in M icr os oftW indows as an in this paper we first analyzed the PE file structure and the p rinci p le of packing,and then expounded the general step s of unpacking .After that,in ter m s of the comp ressi on shell and encryp ti on shell,we f ocused on the p rinci p les and methods of unpacking technol ogy .Finally,we discussed and analyzed the ca mouflage shell,multi 2shell and self 2chec 2king .Keywords PE Packing Unpacking Ca mouflage shell Multi 2shell Self 2checking0 引 言PE 文件格式是W I N 32环境自带的跨平台可执行文件格式,常见的EXE 、DLL 、OCX 、SYS 、COM 等文件均是PE 格式。
第2课用相应工具软件为软件自动脱壳(非手动脱壳)
第二课用相应工具软件为软件自动脱壳(非手动脱壳)欲破解一个软件,我们首先应根据前面的内容侦测它的壳,然后我们要把它的壳脱去,还原软件的本来面目。
如果软件是一个PLMM,我们不喜欢穿衣服的MM,我们不喜欢艺术照的MM,我们迫不及待地想把MM脱光,想把MM骗上床。
带壳的软件以后很难分析,带壳的穿衣的MM很难调教,壳是一个拦路虎,我们却不知武松醉在何处。
这就如同我们要吃糖炒栗子,必须先剥掉栗子壳一样。
这一课就教给你如何用自动剥壳机去掉花生壳、栗子壳之类的东东。
若侦测出它根本没加壳,就可省掉这一步了(现在没加壳的软件已经很少很少了,除非软件作者缺乏最基本的加密解密常识)。
脱壳成功的标志是脱壳后的文件能正常运行,功能没有任何损耗。
一般来说,脱壳后的文件长度大于原文件长度;即使同一个文件,当采用不同脱壳软件进行脱壳的时候,由于脱壳软件机理不同,脱出来的文件大小也不尽相同。
但只要能够运行起来,这都是正常的,就如同人的体重,每次上秤,份量都有所不同。
但只要这个人是健康的,就无所谓,合乎情理。
一、脱壳软件的两大类别(两个门派――少林、武当)脱壳软件主要分两大类:专用脱壳软件(武当派)和通用脱壳软件(少林派,源自“全民皆武,天下英雄出少年”)。
每个专用脱壳软件只能脱掉特定的一种或两种加壳软件所加的壳,也就是说它是专门针对某种加壳软件的某个版本而制作的。
通用脱壳软件则具有通用性,可以脱掉许多种不同类型的壳。
根据“以一当一”的原则,专用类此门派为“武当”派。
大家可能会有这样的疑问?既然有通用脱壳软件,为什么还要专用脱壳软件呢?所谓“术业有专攻”,通用的脱壳程序往往不能精确地适用于某些软件,而专用的脱壳程序适用面虽窄,对付特定的壳却极为有效。
因此,少林派和武当派缺一不可,相辅相成。
均掌握了武术之精髓,能置“壳”以死地,打得壳满地找牙,第一时间以迅雷不及掩耳之势极速脱掉壳MM的衣衫。
二、专用脱壳软件的四大类别根据壳的流行程度,常用的脱壳软件主要有三类:脱Aspack类(叉A)、脱UPX类(叉U)、脱pecompact类(叉P,怎么又跟微软搞到一块儿了),分别针对前面提到的3个加壳软件。
破解高手速成长——傻瓜化手工脱壳
P t h. x ” a c e e ,可 以查 出程序 加 的是
A p c .2 。P i sak 2 1 壳 ED没有 A p c sak 2 1 壳的脱 壳插 件 , .2 因此 可 以点 击 下
方 的 “ > 按 钮 一 “ 件” “ e ei 一 ” 插 一 G nr c
¨ ,
lf _
0
繁患
… (● ■l H ~ ~ ■ ●●一
:
◎ 用 P D脱 u x壳 P
嚣: 慧—— __ :
’
’
度扫描 , 测 出加壳程 序 的真 实 O P 检 E
运 行 “ p c e e e 文 Un a k d. x ”
…
…
¨ ■●
“ 口点 ” 项 目 ,但 是 这 个 不 是 真 入
件 。
“
@ 设 置八日地 址
单 中选 择 “ 断点 ”一 “ 运行 到选定 位
^口点 瞳 萄面 一 西 文件—●: 两妇 ~ 岫 _ ■■l幢l- ~ 一 t
点 击 界面 右 下 方 的 “ 一> ” 按
置 ”命 令 ( 图 5 , 如 ) 也可 以直 接按 下
维普资讯
红客路线
在上 期杂 志 中 , 我们 向大 家介绍 了一 下破解 “ 天软 件记 录查看 器” 聊 的 方 法 , 中手工 脱 壳是很 重要 的一个 其 步骤 。常常 在破解 时 ,碰 到一 些未 知 壳 , 不到脱壳 工 具该 怎么办 ?有一 找
,常 看 “ 客 路 线 ” 的 朋 友 一 红 具 ,在使 用时都 只是 用它 来查 壳 ,其 1” 实 大 家 忽略 了它 的 另 外 一 些 重 要 功 定都 很 熟 悉这 个 工具 。 能。在 P i 中集成 了相 当多 的功 能 ED
普通壳的脱壳方法和脱壳技巧
普通壳的脱壳方法和脱壳技巧脱壳是指将一个已经打包的可执行文件(通常是二进制文件)恢复为原始的、可以读取和修改的形式。
这在软件逆向工程、安全审计和病毒分析等领域都是非常常见的操作。
下面我将为你介绍普通壳的脱壳方法和脱壳技巧。
一、普通壳的脱壳方法1.静态脱壳静态脱壳是指对目标文件进行分析,找到壳的解密和载入代码,然后将其解密出来,恢复原始的可执行文件。
- 调试器脱壳:使用调试器(如OllyDbg、IDA Pro等)来单步执行目标程序,找到壳的解密代码,并通过调试器的内存分析功能来寻找待解密的数据。
一旦找到解密的算法和密钥,就可以将目标文件完全解密出来。
- 静态分析脱壳:通过静态分析工具(如IDA Pro、Hopper等)来逆向目标文件,找到壳的解密算法和密钥,然后将其解密出来。
2.动态脱壳动态脱壳是指在目标程序运行时,通过对程序的运行过程进行监控和分析,找到壳的解密和载入代码,并将其解密出来,恢复原始的可执行文件。
-API钩取脱壳:通过使用一个DLL注入到目标程序的地址空间中,然后使用API钩子来监控API函数的调用,找到壳解密代码的入口点。
一旦找到壳解密代码的起始地址,就可以通过调试器执行目标程序,并在合适的时机将解密出来的代码或数据导出。
- 内存转储脱壳:通过在目标程序的执行过程中,使用内存转储工具(如winhex、ollydump等)将目标程序的内存转储出来,然后使用静态脱壳的方法对内存转储文件进行分析。
二、普通壳的脱壳技巧1.加载器分析在进行脱壳之前,首先要分析目标文件中的加载器。
加载器是壳程序的一部分,用于解压和载入真正的可执行文件。
通过分析加载器,可以确定载入代码和解密算法的位置,并推导出解密算法的密钥。
2.寻找壳代码的入口点在进行脱壳时,需要找到壳代码的入口点,即壳程序开始执行的位置。
可以通过调试器或者静态分析工具来寻找入口点,并标记下来以备后续使用。
3.内存和断点设置通过内存和断点设置,在目标程序运行过程中定位到关键的内存位置。
PECompact壳研究与解密脱壳-电脑资料
PECompact壳研究与解密脱壳-电脑资料因为PECompact有2种加壳方式,我也拜读了DiKeN的"PECompact的OEP的简易查找方法",于是想深入研究一下.这是98的Notepad.exe使用PECompact(JCALG1)压缩过的结果0040AB20 >EB 06 JMP SHORT NOTEPAD.0040AB28<==第一条指令0040AB22 68 CC100000 PUSH 10CC<======这就是程序的原始OEP的RVA地址这是这是98的Notepad.exe使用PECompact(aPLib)压缩过的结果0187:0040AB1F 68EB0668CC PUSH DWORD CC6806EB<==第一条指令0187:0040AB24 1000 ADC [EAX],AL0187:0040AB26 00C3 ADD BL,AL0187:0040AB28 9C PUSHF0187:0040AB29 60 PUSHA这样就不能用DiKeN的"PECompact的OEP的简易查找方法"来找程序的OEP了.于是我手动跟踪了一下,并做了记录:Notepad.exe使用PECompact(JCALG1)压缩过0187:0040AAFF 65EB06 JMP SHORT 0040AB080187:0040AB02 68CC100000 PUSH DWORD 10CC0187:0040AB07 C3 RET0187:0040AB08 9C PUSHF0187:0040AB09 60 PUSHA0187:0040AB0A E802000000 CALL 0040AB11 //这里按F8继续.0187:0040AB0F 33C0 XOR EAX,EAX0187:0040AB13 83C004 ADD EAX,BYTE +04......按F12,到了这里0187:0040AB77 F3A5 REP MOVSD0187:0040AB79 8BFB MOV EDI,EBX0187:0040AB7B C3 RET //光标停在这里0187:0040AB7C BDCF400000 MOV EBP,40CF0187:0040AB81 8BF7 MOV ESI,EDI......再按F12,到了这里0187:0040D551 68CC104000 PUSH DWORD 004010CC 0187:0040D556 C20400 RET 04 //返回OEP 处了!0187:0040D5598BB55B974000 MOV ESI,[EBP+0040975B]到了OEP直接Makepe.Notepad.exe使用PECompact(aPLib)压缩0187:0040AB1F 68EB0668CC PUSH DWORD CC6806EB 0187:0040AB24 1000 ADC [EAX],AL0187:0040AB26 00C3 ADD BL,AL0187:0040AB28 9C PUSHF0187:0040AB29 60 PUSHA0187:0040AB2A E802000000 CALL 0040AB31 //F8进去后0187:0040AB2F 33C0 XOR EAX,EAX0187:0040AB31 8BC4 MOV EAX,ESP......按F120187:0040AB97 F3A5 REP MOVSD0187:0040AB9B C3 RET //停在这里0187:0040AB9C BDCF400000 MOV EBP,40CF......再按F120187:0040D54F 9D POPF0187:0040D550 50 PUSH EAX0187:0040D551 68CC104000 PUSH DWORD 004010CC 0187:0040D556 C20400 RET 04 //又返回OEP了,怎么这么简单?这里还有一点要说明,我发现使用PECompact压缩过的程序,用PROCDUMP或LordPE就算Dump出来还是不能使用对于Dump出来的程序必须要修改入口地址才可以记得以前在脱PECompact的壳时用PROCDUMP来Dump就非法,顺便用TRW跟了一下,有一点点体会如下:记得在TRW中输入Faults on,然后用PROCDUMP脱壳吧,然后TRW就跳出来了0187:004055C3 8B7D10 MOV EDI,[EBP+10]0187:004055C6 56 PUSH ESI0187:004055C7 51 PUSH ECX0187:004055C8 AC LODSB //停在这里,于是下断 bpx eip-1之后就F50187:004055C9 AE SCASB0187:004055CA 750B JNZ 004055D70187:004055CC 803F00 CMP BYTE [EDI],00然后重新运行PROCDUMP,继续脱壳0187:004055C3 8B7D10 MOV EDI,[EBP+10]0187:004055C6 56 PUSH ESI0187:004055C7 51 PUSH ECX //断在这里让我们来修改吧a eip+1nop回车F5看看是不是正常脱壳了啊!当然也可以直接修改主程序,以后就不用这样反复修改了!查找8B 7D 10 56 51 AC AE,改为8B 7D 10 56 51 90 AE就可以了!不知道会不会有什么不对,还请高手指正!后记,其实我在跟踪的时候并不是上面写的时候那么容易,本来我是一步一步慢慢走的,后来跟了几遍,就发现了这个规律,所以没有详细写跟踪过程,只是把自己的总结写了出来,如果有什么不足或欠缺,还请多多指教,本人才疏学浅,还需要大家的帮助修正一点错误关于Procdump的修改,当时没有发现,如果修改了主程序,使用脱壳脚本的时候会有问题,建议保留原来的备份.修改的程序作为专门脱用未修改程序脱壳时非法的工具。
软件加壳脱壳技术教程
一.壳的概念
作者编好软件后,编译成exe可执行文件
1.有一些版权信息需要保护起来,不想让别人
随便改动,如作者的姓名等
2.需要把程序搞的小一点,从而方便使用
于是,需要用到一些软件,他们能将exe可执行文件压缩,
实现上述两个功能,这些软件称为加壳软件或压缩软件.
它不同于一般的winzip,winrar等压缩软件.
好,我们先从一个基本的Upx壳入手。
本地下载
首先必须的工具要准备好,
查壳工具
Peid0.91,Fileinfo,Language2000,File Scanner等。
查入口工具。
Peid0.91首推,冲击波(9X)系统专用,Asloader,自己的感觉,程序跨段跳跃点。
脱壳工具。
Ollydbg首选,LoadPe,PEditor,ProcDump等,够用了。
傻瓜式软件,运行后选取待侦测壳的软件即可(open)
脱壳教程2:手动脱壳入门第一篇
【使用工具】Ollydbg1.10b,ImportREC1.6F
【破解平台】Win2000/XP
前言,作者写这篇文章只是举个例子,希望读者能够举一反三,看清思路.
本论坛中破解高手很多,不会手动脱壳者人数仍然不少。有人会说,我有Unaspack,Caspr,ProcDump等众多脱壳工具,不会手动脱壳用工具脱就可以了。但有部分壳如Asprotect1.23Rc4,本论坛高手仙剑(将自己加密壳伪装成C++),有漏洞,用Peid查壳,Ep区段写有Xj,用Od载入提示有壳,更有甚一些软件如大嘴日语加了四层壳,这些都是工具无法脱壳的。随着加密壳的不断出现,基本壳都不会,高版本的加密壳以后脱壳盲根本无从入手。所以,手动脱壳Crack必修。
脱壳教程_精品文档
脱壳教程标题:脱壳教程引言:脱壳是指将软件或应用程序的包装层(也称为保护壳或加密层)移除,以便对其进行更深入的分析、修改或逆向工程。
脱壳过程可以帮助软件开发人员或安全研究人员理解程序的内部运行机制,发现其中的漏洞或者进行优化改进。
本文将介绍脱壳过程的基本原理和几种常见的脱壳工具以及其使用方法。
一、脱壳的基本原理脱壳的基本原理是通过破解或绕过软件的保护机制来移除保护壳。
保护机制通常包括各种检测和防御技术,如代码混淆、加壳、逆向工程等。
常见的保护壳有UPX、ASProtect、Enigma等。
脱壳的过程涉及对程序进行调试、分析和修改。
二、脱壳工具介绍及使用方法1. OllyDbgOllyDbg是一款著名的逆向工程和调试工具,也是脱壳过程中经常使用的工具之一。
它具有强大的调试和反汇编功能,可以帮助分析程序的执行流程、内存变化等。
使用OllyDbg进行脱壳时,首先需要加载待脱壳的程序,然后设置断点,跟踪程序执行,找到关键的保护机制的位置,最终移除保护壳。
2. IDA ProIDA Pro是一款功能强大的反汇编和逆向工程工具。
它可以将程序转换为易读的汇编代码,并提供强大的导航和分析功能。
脱壳时可以使用IDA Pro来分析和修改程序的内存和代码。
它可以帮助找到程序的入口点、解密过程等,从而移除保护壳。
3. x64dbgx64dbg是一款开源的调试器工具,适用于32位和64位的Windows系统。
它具有用户友好的界面和丰富的调试功能,并支持脱壳过程中的动态调试和反调试技术。
使用x64dbg进行脱壳时,可以跟踪程序的执行流程、查看内存变化,找到关键代码并进行修改。
三、脱壳过程示例以某款加壳的软件为例,介绍基本的脱壳过程。
1. 加载待脱壳的程序到脱壳工具中,并设置断点。
2. 运行程序,在断点处停下来,观察程序的状态和执行流程。
3. 跟踪程序的执行,查找关键的保护机制位置,例如解密函数、保护壳的入口等。
4. 分析并修改程序的内存和代码,移除保护壳。
Vmp2.0x脱壳脚本
/////////////////////////
mov first,005D9333
mov write,00D3BEAF
mov getapi,00D3BEC4
mov begin,0012F7FC
mov end,0012FB98
/////////////////////////
/*
脚本 : Vmprotect 2.0x Unpacker(2.01-2.05)
版本 : v1.0
日期 : 09-6-2010
调试选项 : 1.设置 OllyDbg 忽略所有异常选项
2.使用海风月影全选项.
3.去掉'选项-调试设置-地址-解析修饰符号名称' 前面的勾,然后重新打开OD.跑脚本.(必须)
工具 : OllyDbg1.1, ODBGScript 1.65
感谢 : 牙签群里各位大牛.
*/
var getapi
var write
var addr
var dword
var end
var begin
var vpro
var rapi
var dllname
var apiname
cmp $VERSION, "1.64"
jb odbgver
GMI eip, MODULEBASE
mov imgbase, $RESULT
mov tmp1, [imgbase+3C]
add tmp1, imgbase
mov signVA, tmp1
mov imgbasefromdisk, [signVA+34]
查壳脱壳工具介绍(图)02
查壳脱壳工具介绍(图)02导读] 软件加壳,可以起到压缩自身体积,防止资源被修改,同时也提高了破解难度的目的。
我们调试一个软件,非压缩壳一般都需要先脱壳修复程序后方可调试。
软件加壳,可以起到压缩自身体积,防止资源被修改,同时也提高了破解难度的目的。
我们调试一个软件,非压缩壳一般都需要先脱壳修复程序后方可调试。
常见的加壳工具我们将在下文给予介绍。
这里我们先来介绍一下查壳及通用脱壳工具。
常见的程序编写语言有:Borland Delphi 6.0 - 7.0Microsoft Visual C++ 6.0Microsoft Visual Basic 5.0 / 6.0还有汇编、易语言等。
I 查壳工具介绍:我们在很多破解教程中都能够看到这个查壳工具fileinfo.exe(简称fi),由于很久都没有更新,故不推荐大家使用。
目前大家常用的查壳工具主要有PEiD v0.94 和 DiE 0.63 汉化版。
本人感觉DiE 0.63的功能更强大些。
软件界面如下图所示:(汉化版下载,详见附件)II 通用脱壳机介绍:现在比较好用的通用脱壳工具这里推荐两个:1.RL!dePacker 1.3官方地址:官方下载:汉化版下载,详见附件。
目前该脱壳机已经支持以下84种壳的脱壳。
到该软件的官方,还可以下载到其他的脱壳工具,这里就不一一列举。
RL!dePacker is tested with 84+ packers:UPX 0.8x - 2.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]HidePX 1.4 [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]ASPack 1.x - 2.xeXPressor 1.2.x - 1.4.xEZip 1.0MEW 1.xNeoLite 1.0 & 2.0JDPack 1.xJDProtect 0.9nSPack 2.x - 3.x [use GenOEP to detect true OEP and Force OEP option in all cases!]PECompact 1.x - 2.xWWPack32 1.xWinUPack 0.2x - 0.3xPeX 0.99PC Shrink 0.71Polyene 0.01FSG 1.xx & 2.0PackMan 0.0.0.1 & 1.0UPolyX 0.4 & 0.5UPXRedir [use GenOEP to detect true OEP in Delphi case!UPXCrypt [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]32Lite 0.3aStone`s PE Encryptor 2.0NWCCHidePE 2.1StealthPE 2.1PE Diminisher 0.1ORiEN 2.12AHPack 1.xSoftware Compress 1.xPolyCrypt PE 2.1.5PeTite 1.xSPLayer 0.08ShrinkWarp 1.4[G!X]`s Protector 1.2!ExE Pack 1.xLameCrypt 1.0Winkript 1.0SPEC b3DEF 1.0EP Protector 0.3 [don`t use GenOEP function since it is jammed!]SmokesCrypt 1.2dot Fake Signer 3.xVirogenCrypt 0.75UPX Inkvizitor [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]UPXFreak 0.1 [use GenOEP to detect true OEP in Delphi case!dePackSimple UPX-Scrambler[use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]BJFNT 1.3PEStubOEP 1.6KByS Packer 0.2xPELockNT 2.xaUS [Advanced UPX Scrambler] 0.4 - 0.5hmimys-Packer 1.xnPack 1.xUPolyX 0.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]PePack 1.0UPXLock 1.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]PC PE Encryptor alpha [use GenOEP to detect true OEP in all cases!]UG Chruncher 0.xUPX-Scrambler RC 1.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]UPX Protector 1.0x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]UPXShit 0.06 & 0.0.1 [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]yC 1.0SimplePack 1.xRLPack Basic Edition 1.xBeRoEXEPacker 1.xPackItBitchPEncrypt 4.0 [use GenOEP to detect true OEP in all cases!]ReCrypt 0.15 - 0.80 [and all other versions that do not use API redirection, use Tracer option to fix IAT]PEnguinCrypt 1.0UPXScramb 2.xtELock [use Tracer option to fix IAT on versions higher than 0.80]yC [use Tracer option to fix IAT on versions higher than 1.1] CryptoPeProtector 0.9x [use Tracer option to fix IAT on all versions]SLVc0deProtector 1.x [use Tracer option to fix IAT on all versions, manually fix stolen code]ARMProtector 0.xEXEStealth 2.x [use Tracer option to fix IAT on all versions]PeLockNt 2.xPerplex PE-Protector 1.x [use Tracer option to fix IAT on all versions]CodeCrypt 0.16x!EP (ExE Pack) 1.x [without Morphine protection]Krypton 0.x [use Tracer option to fix IAT on all versions]OrIEN 2.1x [use Tracer option to fix IAT on all versions]2.QuickUnpack V1.0 RC1官方地址:官方下载:wp-content/uploads/2007/03/quickunpack10rc1.zip更多信息:官方下载:原文出自【比特网】,转载请保留原文链接:。
脱壳工具大汇总
ASProtect 1.23脱壳辅助工具
Armadillo壳
Armadillo find protected 1.8
Armadillo find protected 1.8 by vel
检测Armadillo版本号及其保护类型
ArmaG3ddon v1.9
Armadillo脱壳机,支持3.78~ 7.7
ArmaGUI 1.5.4
Armadillo 3.xx/4.xx脱壳机
dilloDIE 1.4
dilloDIE 1.5
dilloDIE 1.6
Armadillo 4.xx unpacker by mr_magic
一款脱Armadillo 4.xx的脱壳机
ArmInline V0.71
ArmInline v0.96f
支持Shrinker 3.2
yP壳
Unpacker for yP 1.02
支持Yoda Protector 1.02,带源码
安装程序
UniExtract 1.42
它能解开现在流行打包工具比如:NSIS,Inno等等。
/
Wise UNpacker 0.90A
vera 0.15
ASProtect detector v0.15,一款PEiD插件,用来识别ASProtect版本号
Stripper 2.07ht
Stripper 2.11 RC2
stripper v2.13 (last beta)
可以全自动脱ASProtect1.2x的壳,支持EXE和DLL文件,工作平台Windows 2000/XP
DBPE(幻影壳)
undbpe 1.06
幻影2.xx脱壳机
第2课用相应工具软件为软件自动脱壳(非手动脱壳)解析
第二课用相应工具软件为软件自动脱壳(非手动脱壳)欲破解一个软件,我们首先应根据前面的内容侦测它的壳,然后我们要把它的壳脱去,还原软件的本来面目。
如果软件是一个PLMM,我们不喜欢穿衣服的MM,我们不喜欢艺术照的MM,我们迫不及待地想把MM脱光,想把MM骗上床。
带壳的软件以后很难分析,带壳的穿衣的MM很难调教,壳是一个拦路虎,我们却不知武松醉在何处。
这就如同我们要吃糖炒栗子,必须先剥掉栗子壳一样。
这一课就教给你如何用自动剥壳机去掉花生壳、栗子壳之类的东东。
若侦测出它根本没加壳,就可省掉这一步了(现在没加壳的软件已经很少很少了,除非软件作者缺乏最基本的加密解密常识)。
脱壳成功的标志是脱壳后的文件能正常运行,功能没有任何损耗。
一般来说,脱壳后的文件长度大于原文件长度;即使同一个文件,当采用不同脱壳软件进行脱壳的时候,由于脱壳软件机理不同,脱出来的文件大小也不尽相同。
但只要能够运行起来,这都是正常的,就如同人的体重,每次上秤,份量都有所不同。
但只要这个人是健康的,就无所谓,合乎情理。
一、脱壳软件的两大类别(两个门派――少林、武当)脱壳软件主要分两大类:专用脱壳软件(武当派)和通用脱壳软件(少林派,源自“全民皆武,天下英雄出少年”)。
每个专用脱壳软件只能脱掉特定的一种或两种加壳软件所加的壳,也就是说它是专门针对某种加壳软件的某个版本而制作的。
通用脱壳软件则具有通用性,可以脱掉许多种不同类型的壳。
根据“以一当一”的原则,专用类此门派为“武当”派。
大家可能会有这样的疑问?既然有通用脱壳软件,为什么还要专用脱壳软件呢?所谓“术业有专攻”,通用的脱壳程序往往不能精确地适用于某些软件,而专用的脱壳程序适用面虽窄,对付特定的壳却极为有效。
因此,少林派和武当派缺一不可,相辅相成。
均掌握了武术之精髓,能置“壳”以死地,打得壳满地找牙,第一时间以迅雷不及掩耳之势极速脱掉壳MM的衣衫。
二、专用脱壳软件的四大类别根据壳的流行程度,常用的脱壳软件主要有三类:脱Aspack类(叉A)、脱UPX类(叉U)、脱pecompact类(叉P,怎么又跟微软搞到一块儿了),分别针对前面提到的3个加壳软件。
简单脱壳教程笔记(7)---手脱PECompact2.X壳
简单脱壳教程笔记(7)---⼿脱PECompact2.X壳本笔记是针对ximo早期发的脱壳基础视频教程。
整理的笔记。
本笔记⽤到的⼯具下载地址:简单介绍:FSG壳是⼀款压缩壳。
我们这⾥使⽤9种⽅式来进⾏脱壳⼯具:ExeinfoPE或PEid、OD、LordPE、ImportREConstructor脱壳⽂件:05.⼿脱PECompact2.X壳.rar1 单步我们发现有两处call会跑飞。
那么我们须要在跑飞处进⼊,然后在跟就可以。
第⼀个跑飞的call,我们此时不应该单步⽽是进⼊第⼆个跑飞的call,我们此时不应该单步⽽是进⼊OEP2 ESP定律单步到在此处。
并在数据窗体中尾随,下断点,单步跟踪就可以。
可參考前⾯的笔记内容。
3 使⽤BP VirtualFree断点⾸先下 bp VirtualFree断点然后 SHIFT+F9执⾏,接着按F2取消断点接着ALT+F9运⾏到⽤户代码ctrl+f 进⾏查找 push 8000(特征码)F2设置断点, shift+f9执⾏到这,然后取消断点接着单步跟就可以。
就会到达OEP4 相同设置BP VirtualFree⾸先设置断点然后。
两次SHIFT+F9。
然后,取消断点。
Alt+F9 并运⾏到⽤户代码然后单步⾛。
就会到达OEP5.1、载⼊程序后,会发现⾸⾏有个地址0040A86D > B8 74DE4500 mov eax,qqspirit.0045DE742、在该地址处下断点 bp 0045de743、然后shift+f9执⾏,并取消断点4、我们在该处的retn 下⼀⾏设置断点,然后shift+f9执⾏,并取消断点045DE74 B8 F9CB45F0 mov eax,F045CBF90045DE79 8D88 9E120010 lea ecx,dword ptr ds:[eax+1000129E] 0045DE7F 8941 01 mov dword ptr ds:[ecx+1],eax0045DE82 8B5424 04 mov edx,dword ptr ss:[esp+4]0045DE86 8B52 0C mov edx,dword ptr ds:[edx+C]0045DE89 C602 E9 mov byte ptr ds:[edx],0E90045DE8C 83C2 05 add edx,50045DE8F 2BCA sub ecx,edx0045DE91 894A FC mov dword ptr ds:[edx-4],ecx0045DE94 33C0 xor eax,eax0045DE96 C3 retn0045DE97 B8 78563412 mov eax,12345678 //下断点5、接着单步跟就可以。
(完整版)常见几种脱壳方法(可编辑修改word版)
----------------<小 A 分>----------------一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北斗)" ... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!-----------<小 A 分割线>-------------二、工具的认识OllyDBG ring3 shell 层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0 级别调试工具-------------<小 A 分割>-------------------三、常见手动脱壳方法预备知识1.P USHAD (入栈/压栈)代表程序的入口点,2.P OPAD (弹栈/出栈)代表程序的出口点,与 PUSHAD 想对应,一般找到这个OEP 就在附近3.O EP:程序的入口点,软件加壳就是隐藏了 OEP(或者用了假的 OEP/FOEP),只要我们找到程序真正的 OEP,就可以立刻脱壳。
------------<小 A 分割线>--------------------方法一:单步跟踪法1.用OD 载入,点“不分析代码!”2.单步向下跟踪 F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按 F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个 CALL 的,我们就 F7 跟进去,不然程序很容易跑飞,这样很快就能到程序的 OEP6.在跟踪的时候,如果运行到某个 CALL 程序就运行的,就在这个 CALL 中F7 进入7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就会到程序的 OEP。
手脱加双层壳的病毒(PECompact2.x壳+未知壳)-电脑资料
手脱加双层壳的病毒(PECompact2.x壳+未知壳)-电脑资料目标程序:病毒样本“Trojan/Small.dol”程序操作环境:Windows XP-SP2使用工具:Ollydbg 1.10版---------------------------------------------------------------------------------------------前言:简单介绍下病毒样本“Trojan/Small.dol”程序所加的壳吧,样本外层加了一个“PECompact 2.x”壳,内层加了一个混淆入口点的壳,但不知道是什么名字,不过这个壳貌似很常见,。
今天拿这个壳做例子希望对初级接触脱壳的朋友有帮助,也希望你们会喜欢。
分析:脱壳前,使用PEID V0.93查壳,显示壳名为:“PECompact 2.x -> Jeremy Collake”。
看了下这个程序有2个节段。
EP区段名分别为:“.CODE/.rsrc”,显示连接程序版本为:2.0 。
注意:如果大家分析的是应用软件加的壳,跑飞几次没什么关系。
但如果分析的是病毒,那么就要千万小心了,因为有些未知病毒可能破坏力非常大的(比如PE感染型病毒)。
不过最好还是养成仔细分析、细心调试的好习惯比较好(我喜欢真实环境,不太喜欢虚拟机,因为感觉不方便)。
今天同样很幸运,依然只跟了一次,壳直接就脱掉了,哈哈!(^_^).---------------------------------------------------------------------------------------------手脱记录:(OD设置为“忽略非法访问内存异常”。
[F2]:下软断点、[F4]:执行到当前代码处、[F7]:单步步入、[F8]单步步过、[F9]运行。
) ---------------------------------------------------------------------------------------------第一步骤:脱最外层的PECompact 2.x壳00401000 > B8 C41D4100 MOV EAX,coderui_.00411DC4 ;OD载入后停在这里,[F8]单步向下走。
pecompact2.x-jeremycollake完美脱壳去校验-『我为
PECompact 2.x -> Jeremy Collake完美脱壳去校验-『我为...PECompact 2.x -> Jeremy Collake完美脱壳去校验本文来自: UPK软件安全社区作者: 夜凉如水日期:2008-4-17 11:28 阅读: 3618人收藏某程序的脱壳,程序就不介绍工具ollydbg lordpe载入程序//ep00401000 s> B8 88696E00 mov eax,6E698800401005 50 push eax00401006 64:FF35 00000000 push dword ptr fs:[0]0040100D 64:8925 00000000 mov dword ptr fs:[0],esp00401014 33C0 xor eax,eax00401016 8908 mov dword ptr ds:[eax],ecx00401018 50 push eax00401019 45 inc ebp0040101A 43 inc ebx0040101B 6F outs dx,dword ptr es:[edi]0040101C 6D ins dword ptr es:[edi],dx0040101D 70 61 jo short 00401080 ; ss225.00401080 0040101F 637432 00 arpl word ptr ds:[edx+esi],si 00401023 8E13 mov ss,word ptr ds:[ebx]00401025 FC cld00401026 C6 ??? ; Unknown command00401027 1E push ds复制代码ctrl+g VirtualAlloc F2下段F9运行ALT+f9返回006E69E15A pop edx ; ss225.00400000006E69E2 8BF8 mov edi,eax006E69E4 50 push eax006E69E5 52 push edx ; ntdll.KiFastSystemCallRet006E69E6 8B33 mov esi,dword ptr ds:[ebx]006E69E8 8B43 20 mov eax,dword ptr ds:[ebx+20]006E69EB 03C2 add eax,edx ; ntdll.KiFastSystemCallRet006E69ED 8B08 mov ecx,dword ptr ds:[eax]006E69EF 894B 20 mov dword ptr ds:[ebx+20],ecx ; kernel32.7C809AB9006E69F2 8B43 1C mov eax,dword ptr ds:[ebx+1C]006E69F5 03C2 add eax,edx ; ntdll.KiFastSystemCallRet006E69F7 8B08 mov ecx,dword ptr ds:[eax]006E69F9 894B 1C mov dword ptr ds:[ebx+1C],ecx ; kernel32.7C809AB9006E69FC 03F2 add esi,edx ; ntdll.KiFastSystemCallRet006E69FE 8B4B 0C mov ecx,dword ptr ds:[ebx+C]006E6A01 03CA add ecx,edx ; ntdll.KiFastSystemCallRet006E6A03 8D43 1C lea eax,dword ptr ds:[ebx+1C]006E6A06 50 push eax复制代码ctrl+F Call Edi f2下段运行到此006E6A26 FFD7 call edi ; ntdll.7C930738006E6A28 8985 3F130010 mov dword ptrss:[ebp+1000133F],eax006E6A2E 8BF0 mov esi,eax006E6A30 8B4B 14 mov ecx,dword ptr ds:[ebx+14]006E6A33 5A pop edx ; ss225.00400000006E6A34 EB 0C jmp short 006E6A42 ; ss225.006E6A42 006E6A36 03CA add ecx,edx ; ntdll.KiFastSystemCallRet 006E6A38 68 00800000 push 8000006E6A3D 6A 00 push 0006E6A3F 57 push edi ; ntdll.7C930738006E6A40 FF11 call dword ptr ds:[ecx]006E6A42 8BC6 mov eax,esi006E6A44 5A pop edx ; ss225.00400000复制代码F7跟进ctrl+f mov ecx,dword ptr ds:[esi+34]下f2断点运行到此00FF1064 8B4E 34 mov ecx,dword ptr ds:[esi+34]00FF1067 85C9 test ecx,ecx00FF1069 0F84 89000000 je 00FF10F800FF106F 034E 08 add ecx,dword ptr ds:[esi+8] ;ss225.0040000000FF1072 51 push ecx00FF1073 56 push esi00FF1074 E8 47060000 call 00FF16C000FF1079 85C0 test eax,eax00FF107B 74 7B je short 00FF10F800FF107D 8B95 BE1A0010 mov edx,dword ptr ss:[ebp+10001ABE]00FF1083 8B8D C21A0010 mov ecx,dword ptr ss:[ebp+10001AC2]00FF1089 85C9 test ecx,ecx00FF108B 75 08 jnz short 00FF109500FF108D 8D8D 4E1E0010 lea ecx,dword ptr ss:[ebp+10001E4E]00FF1093 EB 2D jmp short 00FF10C200FF1095 F7C1 00000080 test ecx,8000000000FF109B 74 1E je short 00FF10BB00FF109D 52 push edx ; ss225.0040000000FF109E 81E1 FFFFFF7F and ecx,7FFFFFFF00FF10A4 51 push ecx复制代码程序运行到00FF1067 85C9 test ecx,ecx00FF1069 /0F84 89000000 je 00FF10F8 强制跳转ecx=0024D000 清00024d000为ravsize 后面要用到ctrl+g VirtualFree F9运行1次alt+f9返回00FF1145 FF95 691F0010 call dword ptr ss:[ebp+10001F69] ; kernel32.VirtualFree00FF114B 8B46 0C mov eax,dword ptr ds:[esi+C] //返回到此00FF114E 03C7 add eax,edi ; ss225.0040000000FF1150 5D pop ebp00FF1151 5E pop esi00FF1152 5F pop edi ; ss225.0040000000FF1153 5B pop ebx00FF1154 C3 retn复制代码F8继续跟踪006E6A28 8985 3F130010 mov dword ptr ss:[ebp+1000133F],eax ; ss225.0062D7E8006E6A2E 8BF0 mov esi,eax ; ss225.0062D7E8006E6A30 8B4B 14 mov ecx,dword ptr ds:[ebx+14]006E6A33 5A pop edx ; ss225.00400000006E6A34 EB 0C jmp short 006E6A42 ; ss225.006E6A42006E6A36 03CA add ecx,edx ; ntdll.KiFastSystemCallRet 006E6A38 68 00800000 push 8000006E6A3D 6A 00 push 0006E6A3F 57 push edi006E6A40 FF11 call dword ptr ds:[ecx] ; ntdll.7C92DA54 006E6A42 8BC6 mov eax,esi006E6A44 5A pop edx ; ss225.00400000006E6A45 5E pop esi ; ss225.00400000006E6A46 5F pop edi ; ss225.00400000006E6A47 59 pop ecx ; ss225.00400000006E6A48 5B pop ebx ; ss225.00400000006E6A49 5D pop ebp ; ss225.00400000006E6A4A - FFE0 jmp eax //飞向光明ss225.0062D7E8 复制代码0062D7E8 55 push ebp //oep0062D7E9 8BEC mov ebp,esp0062D7EB 83C4 F0 add esp,-100062D7EE B8 98CF6200 mov eax,62CF980062D7F3 E8 C09BDDFF call 004073B8 ;ss225.004073B80062D7F8 A1 D4A16300 mov eax,dword ptr ds:[63A1D4] 0062D7FD 8B00 mov eax,dword ptr ds:[eax]0062D7FF E8 C8A3E5FF call 00487BCC ;ss225.00487BCC0062D804 8B0D 409F6300 mov ecx,dword ptrds:[639F40] ; ss225.0064CCE80062D80A A1 D4A16300 mov eax,dword ptr ds:[63A1D4] 0062D80F 8B00 mov eax,dword ptr ds:[eax]0062D811 8B15 78C96000 mov edx,dword ptrds:[60C978] ; ss225.0060C9C40062D817 E8 C8A3E5FF call 00487BE4 ;ss225.00487BE40062D81C A1 D4A16300 mov eax,dword ptr ds:[63A1D4] 0062D821 8B00 mov eax,dword ptr ds:[eax]0062D823 E8 3CA4E5FF call 00487C64 ;ss225.00487C640062D828 E8 7B73DDFF call 00404BA8 ;0062D82D 8D40 00 lea eax,dword ptr ds:[eax]复制代码ollydump插件dump lorppe修改ravsize= 0024d000到这里应该是完美脱壳了,但运行脱壳的程序一闪退出了说明程序有自效验0061C27A /74 14 je short 0061C290 ; ss225.0061C2900061C27C |8B45 F4 mov eax,dword ptr ss:[ebp-C] ; kernel32.7C839AA80061C27F |E8 247CDEFF call 00403EA8 ;ss225.00403EA80061C284 |A1 D4A16300 mov eax,dword ptr ds:[63A1D4]0061C289 |8B00 mov eax,dword ptr ds:[eax]0061C28B |E8 C0BAE6FF call 00487D50 ;0061C290 \33C0 xor eax,eax ; ss225.0062D7E80061C292 5A pop edx ; kernel32.7C816FD70061C293 59 pop ecx ; kernel32.7C816FD70061C294 59 pop ecx ; kernel32.7C816FD70061C295 64:8910 mov dword ptr fs:[eax],edx ; ntdll.KiFastSystemCallRet0061C298 68 ADC26100 push 61C2AD0061C29D 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; kernel32.7C839AA80061C2A0 E8 037CDEFF call 00403EA8 ;ss225.00403EA80061C2A5 C3 retn0061C2A6 ^ E9 B583DEFF jmp 00404660 ;ss225.004046600061C2AB ^ EB F0 jmp short 0061C29D ;ss225.0061C29D0061C2AD A1 D4A16300 mov eax,dword ptr ds:[63A1D4] 0061C2B2 8B00 mov eax,dword ptr ds:[eax]0061C2B4 E8 EFB7E6FF call 00487AA8 ;ss225.00487AA80061C2B9 8B45 FC mov eax,dword ptr ss:[ebp-4]0061C2BC 80B8 94110200 00 cmp byte ptrds:[eax+21194],00061C2C3 75 0C jnz short 0061C2D1 ; ss225.0061C2D1 0061C2C5 A1 D4A16300 mov eax,dword ptr ds:[63A1D4]0061C2CA 8B00 mov eax,dword ptr ds:[eax]0061C2CC E8 7FBAE6FF call 00487D50 ; ss225.00487D50复制代码修改0061C27A 74为eb0061C2C3 75为eb。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0050BAC9 8985 23120010 MOV DWORD PTR SS:[EBP+10001223],EAX
0050BACF 8BF0 MOV ESI,EAX
00631BD7 8B08 mov ecx,dword ptr ds:[eax]
00631BD9 894B 1C mov dword ptr ds:[ebx+1C],ecx
00631BDC 03F2 add esi,edx
00631BCF 894B 20 mov dword ptr ds:[ebx+20],ecx
00631BD2 8B43 1C mov eax,dword ptr ds:[ebxdd eax,edx
0040100D 64:8925 0000000>mov dword ptr fs:[0],esp
00401014 33C0 xor eax,eax
00401016 8908 mov dword ptr ds:[eax],ecx
0040101A 43 INC EBX
0040101B 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O command
0040101C 6D INS DWORD PTR ES:[EDI],DX ; I/O command
01240261 5D POP EBP
01240262 81ED 30120010 SUB EBP,10001230
01240268 8DB5 27120010 LEA ESI,DWORD PTR SS:[EBP+10001227]
00631BEB 5A pop edx
00631BEC 58 pop eax
00631BED 0343 08 add eax,dword ptr ds:[ebx+8]
00631BF0 8BF8 mov edi,eax
0124026E 8B46 FC MOV EAX,DWORD PTR DS:[ESI-4]
Ctrl+F搜索命令:mov ecx,[esi+34]
01240333 90 NOP
01240334 90 NOP
00401014 33C0 XOR EAX,EAX
00401016 8908 MOV DWORD PTR DS:[EAX],ECX
00401018 50 PUSH EAX
00401019 45 INC EBP
【灌水】PECompact 2.x 完美脱壳法
【水龙头】cyclotron[BCG][DFCG][FCG][OCN]
【目标】GameThrust v1.1,天空网下载
【加壳方式】PECompact 2.x -> Jeremy Collake
OllyDbg忽略内存访问异常,载入主程序:
00401000 > B8 1CBA5000 MOV EAX,0050BA1C
00401005 50 PUSH EAX
00401006 64:FF35 0000000>PUSH DWORD PTR FS:[0]
0040100D 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
01240340 034E 08 ADD ECX,DWORD PTR DS:[ESI+8]
01240343 51 PUSH ECX
01240344 56 PUSH ESI
bp VirtualFree,中断两次以后返回(thx2fly):
00631BC2 8BF8 mov edi,eax
00631BC4 50 push eax
00631BC5 52 push edx
00631BC6 8B33 mov esi,dword ptr ds:[ebx]
00401018 50 push eax
bp VirtualAlloc Ctrl+F9运行中断后取消断点,Alt+F9返回,返回到00631BC1处
00631BC1 5A pop edx ; JYtmw.00400000 //OD停在这里,向下拉
bp $RESULT
run
run
bc $RESULT
rtu
findop eip,#FFE0# //jmp eax
bp $RESULT
run
bc $RESULT
msg dwImport
msg "请转储文件!"
Regards,
cyclotron
05.2.6
bp VirtualAlloc 运行
返回到用户代码:
Ctrl+F搜索命令:call edi
0050BAC1 8B4B 0C MOV ECX,DWORD PTR DS:[EBX+C]
0050BAC4 894E 14 MOV DWORD PTR DS:[ESI+14],ECX
00631BE6 50 push eax
00631BE7 57 push edi
00631BE8 56 push esi
00631BE9 FFD1 call ecx
01240335 8B4E 34 MOV ECX,DWORD PTR DS:[ESI+34]
01240338 85C9 TEST ECX,ECX ; ecx=8D000保存原始Import,把它改成零
0124033A 0F84 89000000 JE 012403C9 ; 这里强制跳过去,跟tE一样
0050BAE5 5B POP EBX
0050BAE6 5D POP EBP
0050BAE7 FFE0 JMP EAX ; 飞向光明之颠^o^
完全dump下来,修正输入表为8D000,收工。
用OD载入,忽略所有异常,然后载入程序。
00401000 > B8 681B6300 mov eax,JYtmw.00631B68 //OD载入停在这里
00401005 50 push eax
00401006 64:FF35 0000000>push dword ptr fs:[0]
【OS自动脚本】
////////////////////////////////////////////
//// PECompact V2.X 完美脱壳脚本
//// cyclotron [BCG][DFCG][FCG][OCN]
////////////////////////////////////////////
00631BDE 8B4B 0C mov ecx,dword ptr ds:[ebx+C]
00631BE1 03CA add ecx,edx
00631BE3 8D43 1C lea eax,dword ptr ds:[ebx+1C]
00631BF2 52 push edx
00631BF3 8BF0 mov esi,eax
00631BF5 8B46 FC mov eax,dword ptr ds:[esi-4]
msg "请忽略内存访问异常!"
var dwImport
gpa "VirtualAlloc","kernel32.dll"
bp $RESULT
run
bc $RESULT
rtu
findop eip,#FFD7# //call edi
bp $RESULT
0050BADC 57 PUSH EDI
0050BADD FF11 CALL DWORD PTR DS:[ECX]
0050BADF 8BC6 MOV EAX,ESI ; GameThru.00487228
0050BAD1 59 POP ECX
0050BAD2 5A POP EDX
进入call edi,来到:
01240258 53 PUSH EBX ; GameThru.0050B9F8
0050BAE1 5A POP EDX
0050BAE2 5E POP ESI
0050BAE3 5F POP EDI
0050BAE4 59 POP ECX
00631BC8 8B43 20 mov eax,dword ptr ds:[ebx+20]
00631BCB 03C2 add eax,edx
00631BCD 8B08 mov ecx,dword ptr ds:[eax]
run
bc $RESULT
sti
findop eip,#8B4E34# //mov ecx,[esi+34h]
bp $RESULT
run
bc $RESULT
sti
mov dwImport,ecx
mov ecx,0
gpa "VirtualFree","kernel32.dll"
01240259 57 PUSH EDI
0124025A 56 PUSH ESI
0124025B 55 PUSH EBP
0124025C E8 00000000 CALL 01240261