简单去除exe自校验方式
2015-10-20 10:24
302 查看
简单去除exe自校验方式
一、 自校验定义:这些程序会检查自己有没有被修改,如果发现被修改的话,便会离开或进行其它动作。基本的校检方法包括 checksum, 检查大小, 检查跳转代码,等等。
对于我们而言,如果脱壳后的程序运行起来跟脱壳前的程序运行起来不一样,基本上就可以断定为程序增加了自校验机制
二、 自校验示例:
[align=left]三、如何去除自校验:[/align]
[align=left]1. 先进行OD脱壳[/align]
[align=left]注:脱壳完毕后停留在脱壳界面,不要把OD关闭[/align]
[align=left]2. 再开启一个OD,打开脱壳后的程序[/align]
[align=left]3. 两个程序同时下断点 bp CreateFileA然后分别点击运行(F9)[/align]
注:在win7环境下无法OD无法使用这个命令进行断点,只要Ctrl+G, 输入"kernel32.CreateFileA",我们就可以定位到kernel32的CreateFileA了
[align=left]4. 两个OD都点击【Alt+F9】执行到用户代码[/align]
5. 两边同时单步(F8)往下走,查看两个程序是否有不一样的跳转(比如一个实现了一个没实现)
[align=left]6. 接下来我们要做的就是把脱壳后的文件的跳转让它不实现就可以了[/align]
① 最简单的方法就是直接把脱壳后的程序那里的跳转给NOP掉
②观察跳转的上一行汇编代码cmpeax,dword prt ss:[ebp-8],这是汇编代码,意思是eax和dwort进行比较,如果不相等就跳转,相等就不跳转,不懂可以百度,把它改成cmp eax,eax就可以了
③或者把jnz改成je或jz也可以,具体的意思可以去百度一下
7. 然后保存退出OD
8. 再次执行脱壳后的文件,OK,成功了
相关文章推荐
- Javascript的Prototype
- JS实现仿Windows经典风格的选项卡Tab切换代码
- 用VLC做流媒体服务器
- 为什么微软Edge浏览器得不到用户的喜爱
- 求无向联通图的割点
- Android SDK开发包国内下载地址
- ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!
- iOS 的 XMPPFramework 简介
- Python时间,日期,时间戳之间转换
- Could not parse POM gradle
- 测试建模:功能列表(Function List)
- 老五团队最新免费项目第一期名额20个
- C#和ASP.Net面试题目集锦
- segment如何添加方法
- Block - 3
- 【Xcode】提交svn以后xcode工程文件打不开
- 【最新API翻译】 Bluetooth--BluetoothAdapter API 翻译
- Qt使用教程之创建Qt Quick项目
- c# 使用初始化器初始化对象
- 音频功放的另一个mono接法