按钮事件特征码

什么是按钮事件特征码

破解的一个用易语言编写的软件,通常先要搜索到按钮事件特征码,但是并不是说你按钮事件特征码处下断点就一定能精准的捕获按钮事件。例如易语言时钟控件或启动窗口事件都会通过消息派遣至按钮时间特征码处,就算不触发按钮事件,OD也会在按钮事件特征码下的断点处断下

还有一种情况,如果实在是捕获不到按钮事件特征码,那么其可能是被vm掉或者其他一些汇编指令扰乱掉了,但是可以通过对按钮事件特征码附近的汇编指令提取关键特征码,然后再一步步跟到按钮事件特征码

按钮事件特征码FF 55 FC 5F 5E

提取特征码

提取特征码的三个原则

  • 不能包含绝对地址,若需要用则换成通配符

  • 不能包含call,若要用则需将call的地址换成通配符

  • 不能包含变量,若要用则需换成通配符

实例演示

例如我们要提取如下图所示的关键特征码

image-20220821111819212

push 16010003这种push的一个绝对地址,提取特征码时绝对地址需要更换成通配符(通配符是问号),所以提取的特征码如下代码所示

55 8B EC 81 EC 08 00 00 00 6A FF 6A 08 68 ?? ?? ?? ??

这种call的是一个绝对地址也不能作为特征码,也需修改成通配符

image-20220821112203065
E8 ?? ?? ?? ??	

call的一个用中括号括起来的地址我们称为常量, 也需修改成通配符

image-20220821112316735
FF15 ?? ?? ?? ??		

追踪按钮事件

前言

前面已经说了按钮事件特征码捕获的事件不只是按钮事件,还有一些其他事件。但是可以通过下条件断点来精准捕获按钮事件

实例一:按钮事件特征码被修改

在od里打开需破解的程序,跳转到按钮事件特征码处(FF 55 FC 5F 5E)下断点,运行程序然后点击按钮发现程序没有被断下,这是因为这并不是真正的按钮事件特征码,真正的按钮事件特征码可能被人为的修改了

image-20220821155726661

但是可以通过提取按钮事件特征码附近的特征码,这里我就用50 8B 4D 08 8B 51 04 52 8B 45 08 8B 08 51这个特征码来跟按钮事件特征码

当跟到按钮事件特征码后,可以发现其多了个90来扰乱捕获,才导致FF 55 FC 5F 5E特征码失效

image-20220821113559721

实例二:按钮事件特征码被其他控件干扰

在这个按钮事件特征码处下断点,当我在编辑框输入内容时,程序突然被断下来了,可以推断出按钮事件特征码被易语言编辑框给干扰了

image-20220821160323211

可以通过下条件断点来解决这种情况,根据右下角的调用堆栈窗口的EBP-4的值来设定条件,此时[ebp-4]的值是4010AC

image-20220821160828792

给这个断点设定条件,[ebp-4]!=0x4010AC,然后再次运行点击按钮,成功在真正的按钮事件特征码处断下

image-20220821161320752

断下后再查看右下角的调用堆栈, [EBP-4]的值变成了401158

image-20220821161458173

如果你加了一个条件还没断下那就继续加,直到能点击按钮断下为止, 下图是我加了三个条件的断点

image-20220821161711390

最后更新于