简单脱壳教程笔记(7)---手脱PECompact2.X壳

本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记。本笔记用到的工具下载地址:

http://download.csdn.net/detail/obuyiseng/9466056

简介:

FSG壳是一款压缩壳。我们这里使用9种方式来进行脱壳

工具:ExeinfoPE或PEid、OD、LordPE、ImportREConstructor

脱壳文件:05.手脱PECompact2.X壳.rar

1 单步

我们发现有两处call会跑飞,那么我们需要在跑飞处进入,然后在跟即可。

第一个跑飞的call,我们此时不应该单步而是进入

第二个跑飞的call,我们此时不应该单步而是进入

OEP

2 ESP定律

单步到在此处,并在数据窗口中跟随,下断点,单步跟踪即可,可参考前面的笔记内容。

3 使用BP VirtualFree断点

首先下 bp VirtualFree断点

然后 SHIFT+F9运行,接着按F2取消断点

接着ALT+F9执行到用户代码

ctrl+f 进行查找 push 8000(特征码)

F2设置断点 , shift+f9运行到这,然后取消断点

接着单步跟即可,就会到达OEP

4   同样设置BP VirtualFree

首先设置断点

然后,两次SHIFT+F9。

然后,取消断点。Alt+F9 并执行到用户代码

然后单步走,就会到达OEP

5.

1、加载程序后,会发现首行有个地址

0040A86D >  B8 74DE4500     mov eax,qqspirit.0045DE74

2、在该地址处下断点    bp 0045de74

3、然后shift+f9运行,并取消断点

4、我们在该处的retn 下一行 设置断点,然后shift+f9运行,并取消断点

045DE74    B8 F9CB45F0     mov eax,F045CBF9

0045DE79    8D88 9E120010   lea ecx,dword ptr ds:[eax+1000129E]

0045DE7F    8941 01         mov dword ptr ds:[ecx+1],eax

0045DE82    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],0E9

0045DE8C    83C2 05         add edx,5

0045DE8F    2BCA            sub ecx,edx

0045DE91    894A FC         mov dword ptr ds:[edx-4],ecx

0045DE94    33C0            xor eax,eax

0045DE96    C3              retn

0045DE97    B8 78563412     mov eax,12345678                      //下断点

5、接着单步跟即可,就会到达OEP

6

1、设置bp VirtualAlloc 断点,然后shift+f9 运行,并取消断点

2、alt+f9 执行到用户代码    向下拉,看到JMP。运行到这

3、然后接着单步即可。

7.最后一次异常法;

1、选项---》调试设置---》异常------取消所有异常。

2、然后将程序重新载入

3、按shift+f9 ,发现2次shift+f9 就会让程序跑起来了,

(之所以叫最后一次异常法,我们利用的就是利用最后一次异常,也就是说,

我们有运行shift+f9有M次,就让程序跑起来了,那么我们重新载入程序后,

只需要按 M-1次shift+f9即可)

4、由于2次跑飞,我们按1次shift+f9,然后在堆栈窗口中  找SE句柄

5、然后 我们转到 0045de74处, 并在retn下一行下断 (和第5种类似)

045DE74    B8 F9CB45F0     mov eax,F045CBF9

0045DE79    8D88 9E120010   lea ecx,dword ptr ds:[eax+1000129E]

0045DE7F    8941 01         mov dword ptr ds:[ecx+1],eax

0045DE82    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],0E9

0045DE8C    83C2 05         add edx,5

0045DE8F    2BCA            sub ecx,edx

0045DE91    894A FC         mov dword ptr ds:[edx-4],ecx

0045DE94    33C0            xor eax,eax

0045DE96    C3              retn

0045DE97    B8 78563412     mov eax,12345678//下断

6、shift+f9运行到该位置,取消断点后 ,接着单步跟即可

注意:

如果不能用最后一次异常法脱强壳,一用 shift+f9 就直接跑飞,解决如下

在OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重启OD再试试。

使用完成后,我们要将异常-Skip Some Exceptions选项  恢复

8 两次内存

1、在内存窗口中,找到第一个.rsrc, 然后F2下断点,并运行

2、再次在内存窗口中找到

3、然后单步跟即可,当遇到 retn的时候,要在retn下一行设置断点,然后单步即可。

9 at GetVersion

1、由于该程序是c++编写,所以可以设置 at GetVersion断点。

2、向下 在retn处设置断点,并运行

3、然后取消断点,单步,向上拖就会看到OEP了

时间: 2024-10-23 15:39:33

简单脱壳教程笔记(7)---手脱PECompact2.X壳的相关文章

简单脱壳教程笔记(9) --- 手脱TELock0.98b1壳

本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 TELock 操作 1.最后一次异常法 1.选项--->调试设置--->异常------取消所有异常. 在OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重启OD再试试. 2.然后将程序重新载入 3.按shift+f9 ,发现17次shift+f9 就会让程序

简单脱壳教程笔记(10) --- 手脱EXE32PACK壳

本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 EXE32PACK 1.ESP定律 1.将程序加载到OD中,发现有大段的加密指令,我们先单步走,到达关键指令,push ebp 2.单步运行到cmp eax,eax处,在寄存器窗口的esp处,右键在数据窗口跟随,并在数据窗口中进行设置硬件断点. 3.按运行,并删除硬件断点 4.然后单步,就会到达OEP 2.下断:

简单脱壳教程笔记(8)---手脱EZIP壳

本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记.本笔记用到的工具下载地址: http://download.csdn.net/detail/obuyiseng/9466056 EZIP壳 : 当载入到OD中的时候,会发现有一串jmp watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 操

<Crack> 手脱UPX

2016-4-19(YPP) <此篇为脱壳入门教程> UPX简介 http://baike.baidu.com/link?url=h_P3r-L0icvZoSNO-HUwY4RE3ptQ9r6d8H1ZFsgGlCOqyv6Q68N95BHIvNY2nCs0IUdYt0xy6LYQ_pDF-Gg6Na               ①UPX加壳压缩               ②寻找OEP               ③Dump内存映像               ④重建IAT         

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整) 本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习.原文地址,http://dockone.io/article/101. 文中一些链接可能会跳转国外的网站,如果没有插件或开VPN的朋友,可以尝试修改一下Hosts文件,如何修改Hosts文件.或者使用XXNet插件,如何使用XXnet 介绍 Docker是一个新的容器化的技术,它轻巧,且易移植,号称"build once, configure

imooc’s html 基础教程笔记

imooc’s html 基础教程笔记 imooc’s html 基础教程 第一章 Html介绍 1.1 Html和CSS的关系 1.2认识html标签 1.3 标签的语法 1.4 认识html文件基本结构 1.5 认识head标签 1.6了解HTML的代码注释 2.1语义化,让你的网页更好的被搜索引擎理解 2.2 标签,网页上显示的内容放在这里 2.3 开始学习标签,添加段落 2.4 了解标签,为你的网页添加标题 2.5 加入强调语气,使用strong和em标签 2.6 使用span标签为文字

jQuery官方基础教程笔记(转载)

本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来说,学会jQuery是必要的.因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果. 虽然jQuery上手简单,比其他

尚学堂马士兵Oracle教程笔记

检查Oracle安装 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba 然后,解除对scott用户的锁 alter user scott account unlock; 那么这个用户名就能使用了. (默认全局数据库名orcl) 1.select ename, sal * 12 from emp; //计算年薪 2.select 2*3 from dual;  //计算一个比较纯的数据用dual表 3.select sysdate from dual

Unity5 官方教程笔记(2D Rogue Like)01 —— BoardManager

作为一个Rogue Like游戏,随机生成地图的功能是必不可少的.在上一篇博文(Unity5 官方教程笔记(2D Rogue Like)01 —— Game Manager)中,我们知道了在此项目中,负责这项工作的类叫做“BoardManager”,而且同时它还要负责对地图的存储工作.下面笔者就来对这个类的功能进行介绍. 首先还是看一下代码的基本结构: 可以看到在这个类里面,我们: 规定了地图的尺寸 设定了墙壁(地图)单元和食物单元的生成数量(也就是在特定关卡中这些单元的数量范围) 保存了各类单