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】,直接搜索即可。

总结:学会了这一个小技能,对于软件的破解大有帮助,虽然简单,但很实用
写教程不容易,转载请加出处,您添加出处,是我创作的动力!
X86逆向2:提取按钮通杀特征码的更多相关文章
- Postsharp 破解工具(通杀版,持续更新)
2019.04.18 重要说明 VS2019 正式版已经发布了,Postsharp v6.2.2-Preview(预览版)也开始支持VS2019.不过截至目前,该预览版还不是特别稳定,因此提醒下大家在 ...
- 通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击
通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击 大家肯定知道前几天刚爆出来一个linux内核(Android也用的linux内核)的dirtycow漏洞.此洞可 ...
- [.NET] [.net 脱壳工具]Sixxpack 最新脱壳机 通杀Sixxpack全版本by -=Msdn5 君临=
[.net 脱壳工具]Sixxpack 最新脱壳机 通杀Sixxpack全版本by -=Msdn5 君临=- 识别方法: 如果无法调戏,请上传附件艾特我.............发帖不易啊..身处大西 ...
- DedeCMS全版本通杀SQL注入漏洞利用代码及工具
dedecms即织梦(PHP开源网站内容管理系统).织梦内容管理系统(DedeCms) 以简单.实用.开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,近日,网友 ...
- 飘逸的python - 极简的二叉树前中后序通杀函数
对于任一结点.能够按某种次序运行三个操作: 訪问结点本身(N) 遍历该结点的左子树(L) 遍历该结点的右子树(R) 用来表示顺序,即,前序NLR/中序LNR/后序LRN. 以下我们用namedtupl ...
- CVE-2017-11882:Microsoft office 公式编辑器 font name 字段栈溢出通杀漏洞调试分析
\x01 漏洞简介 在 2017 年 11 月微软的例行系统补丁发布中,修复了一个 Office 远程代码执行漏洞(缓冲区溢出),编号为 CVE-2017-11882,又称为 "噩梦公式&q ...
- 【渗透实战】那些奇葩的WAF_第二期_无意发现通杀漏洞,空字节突破上传!
/文章作者:Kali_MG1937 CSDN博客号:ALDYS4 QQ:3496925334 未经许可,禁止转载/ 该博文为本人18年左右的渗透记录,文法粗糙,技术含量极低,流水账文章,且今日不知为何 ...
- r0capture安卓应用层通杀脚本-使用文档
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! r0capture安卓应用层通杀脚本-使 ...
- X86逆向15:OD脚本的编写技巧
本章节我们将学习OD脚本的使用与编写技巧,脚本有啥用呢?脚本的用处非常的大,比如我们要对按钮事件进行批量下断点,此时使用自动化脚本将大大减小我们的工作量,再比如有些比较简单的压缩壳需要脱壳,此时我们也 ...
随机推荐
- axios 是如何封装 HTTP 请求的
原载于 TutorialDocs 网站的文章<How to Implement an HTTP Request Library with Axios>.译者:zhangbao90shttp ...
- 1.7 JAVA异常总结
1.7 JAVA异常总结 异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的. 三种异常:分别为检查性异常(一般异常).运行时异常(非检查性异常).错误 Throwab ...
- 使用<bind>元素创建变量
在使用模糊查询sql时,如果使用${}进行字符拼接,无法防止sql诸如问题,如果使用concat函数则只对mysql有效果,用Oracle则需要用连接符||,这样在数据库变的时候需要修改,不利于移植. ...
- Leetcode题目152.乘积最大子序列(动态规划-中等)
题目描述: 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6 ...
- 实例分析jdom和dom4j的使用和区别 (转)
实例分析jdom和dom4j的使用和区别 对于xml的解析和生成,我们在实际应用中用的比较多的是JDOM和DOM4J,下面通过例子来分析两者的区别(在这里我就不详细讲解怎么具体解析xml,如果对于 ...
- 常用css模板
段落超出显示省略号(可单行多行) .p-content{ overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-b ...
- springboot使用RestTemplate以post方式发送json字符串参数(以向钉钉机器人发送消息为例)
使用springboot之前,我们发送http消息是这么实现的 我们用了一个过时的类,虽然感觉有些不爽,但是出于一些原因,一直也没有做处理,最近公司项目框架改为了springboot,springbo ...
- react-1
react 创建方法 首先确定你的电脑上面已经安装了node和npm 检查方法:window键 输入cmd 输入node -v 或者 npm -v 在全局安装create-react-app这条命令 ...
- Android操作外置SD卡和U盘相关文章
Android设备与外接U盘实现数据读取操作https://blog.csdn.net/true100/article/details/77775700 usbdisklibhttps://githu ...
- nodejs语言实现验证码生成功能
验证码已经是非常常用的反作弊.反攻击手段了,其实要实现这个功能对技术水平好的人也不难,但是并不是每个人,每种语言都天然适合搞某个功能...不过我们可以通过封装接口,来屏蔽差异化,把问题简单化,现在就用 ...