X86逆向2:提取按钮通杀特征码
本章我们将学习特征码的提取与定位,特征码是软件中一段固定的具有标志性的代码片段,特征码的用途非常广泛,最常见的就是杀毒软件的查杀了,查杀就是根据特征码定位技术实现的,再比如木马的免杀也是修改了特征码的一些特征片段而躲避查杀的啦。
本章的内容对于软件破解非常的有用,比如你需要破解一个程序,但你无法定位到关键按钮的事件中去,此时你可以先查看待破解程序使用了那种编程语言来写的,然后自己用对应的编程语言编写一个简单的小程序,并放入容易搜索到的字串,然后提取针对特定语言特定版本的通杀特征,最后应用到需要破解的程序中去。
------------------------------------------------------------
本章难度:★☆☆☆☆☆☆☆☆☆
本章课件:CM_02.zip
------------------------------------------------------------
MFC: sub eax,0a
VC++6.0: sub eax,0a
VB语言: 81 6C 24
易语言: FF 55 FC 5F 5E或 (e-debug)
万能断点: F3 A5 8B C8 83 E1 03 F3 A4 E8 Z(User32模块下断)
Delphi: 74 0E 8B D3 8B 83 ?? ?? ?? ?? FF 93 ?? ?? ?? ??
蓝屏保护特征码: 55 8B EC BB 06 00 00 00
蓝屏防御特征码: 55 8B EC 81 EC 14 00 00 00 68 0C 00 00 00
1.先来看一下这个CM例子,当我们点击按钮1的时候,会提示一个MessageBox信息框,而点击按钮2则程序没有反映,我们现在要做的就是通过按钮1提取到按钮事件的特征码,然后下断点并定位到按钮2的按钮事件中。
2.打开OD直接将这个CM拖入OD中,默认会停在程序的OEP位置,这次我们不用字符串来找了换个思路,我们下一个MessageBox弹窗断点,直接选择【设置API断点】,选择消息框,然后选择MessageBoxA就可以了。
3.接着我们按下【F9】让程序跑起来,然后点击CM程序中的【弹出窗口】按钮,发现OD断在了系统领空,系统领空的东西是不能改的,我们直接出这个CALL。
4.通过单步【F8】出CALL后,看到以下代码,并没有段首,我们继续F8出这个call.
5.再次出CALL ,并没有首的符号,这里还在函数的内部,我们继续单步到【retn】出这个call.
6.最后看到了。
7.直接断首下一个【F2】断点,然后运行程序,再次点击弹窗按钮,OD再一次断下了。
8.这只是一个独立的弹窗过程并不是按钮的按钮事件,按钮事件一定是调用了这个过程,所以我们需要找到是谁执行了这里的代码。
由于,调用call指令会将当前指令的下一条指令的地址压入栈存储,所以我们就直接观察堆栈中的参数就能够定位到按钮事件的上一层代码的位置了。
9.OD直接搜索这个地址,看一下是不是有call 调用了他。
10.果然,我们果断在这里下一个【F2】断点,然后直接【F9】运行程序。
11.点击【测试定位效果】按钮,程序会被断下,这更能确定,这就是按钮的调用源头。最后提取这段通杀特征【FF 55 FC 5F 5E】。
12.直接按下【F7】,进入按钮二的核心代码处。
13.如果要使用特征码定位的话,可以在OD反汇编窗口按下【ctrl + B】,直接搜索即可。
总结:学会了这一个小技能,对于软件的破解大有帮助,虽然简单,但很实用
写教程不容易,转载请加出处,您添加出处,是我创作的动力!
最新文章
- Android学习八:获取网络图片
- <;[你在荒废时间的时候别人都在拼命!]>;
- 英文 数字 不换行 撑破div容器
- 一些简单的问题. 2的10次方与k (涉及到b k m的要用乘来解读)
- 对GBK的理解(内附全部字符编码列表):扩充的2万汉字低字节的高位不等于1,而且还剩许多编码空间没有利用
- Android应用切换皮肤功能实现
- 自定义UIViewController与xib文件关系深入分析
- 12C RMAN 备份参考
- ASP.Net MVC 在控制器中获取View中的form表单值的方法
- hover如何在移动浏览器上触发
- 轻量级富文本编辑器wangEditor
- WOSA/XFS PTR Form解析库—xfsptrdata.h
- SQL学习之SQL注入学习总结
- hdu2159完全背包
- Android Studio自动生成UML关系类图
- ECSHOP后台权限分配原理分析
- HTML5游戏开发系列教程7(译)
- VMware虚拟机下安装CentOS系统超详细教程
- 【翻译】22款HTML &; CSS3 UI工具包免费下载
- BZOJ 5441: [Ceoi2018]Cloud computing
热门文章
- VMware配置NAT方式下的静态ip
- springboot发送邮件,以及携带邮件附件简单使用
- [转]五步git操作搞定Github中fork的项目与原作者同步
- 前端知识点回顾——Nodejs
- 如何将ubuntu16.04升级到ubuntu 18.04?
- LC 454. 4Sum II
- LC 871. Minimum Number of Refueling Stops 【lock, hard】
- css3弹性盒子display:flex
- ftp服务器不能上传文件故障
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-04 自定义Zuul过滤器实现登录