在很久很久以前,有几个加密过的小程序
然后,他们被我破解了….
首先来看第一个,如下图:
我们需要把“开启MFC之门”的这个按钮点亮
有两个思路:
①:首先用资源编辑器查看一下程序的资源有哪些,尝试一些解题的方法
②:查看反汇编代码,通过修改反汇编代码来达到破解题目的目的
方法 一:
把exe文件拖进资源编辑器中查看资源
我们看到有一个以正常方式打开文件时没有显示的“确定”按钮,并且这个按钮应该是可以点击的。如果是这样的话,我们可以通过 Tab键来切换程序界面中的焦点,把焦点切换在“确定”按钮上来点击,也可以通过点击“确定”按钮来点亮“开启MFC之门”按钮。
然后,我们通过资源编辑器打开文件的目的基本达到了,但是既然通过点击“确定”按钮可以点亮“开启MFC之门”按钮,那么把他们的ID互换之后是不是可以解开“开启MFC之门”按钮的禁用?
更改按钮ID之后,编译一下脚本,再保存下来
成功点亮!
方法 二:
把按钮禁用的函数是EnableWindow,使用OD打开程序,先查看程序有没有使用EnableWindow函数,如果有使用这个函数,在命令行出输入“bp EnableWindow”,在EnableWindow函数出下断点。
断点断在这里。
这里是EnableWindow函数内部,我们找到上一层,传参数的那一层。
这是调用EnableWindow函数的那层,这层是系统生成的代码,跳过,再往上找一层
来到这么一层,我们看不到任何系统生成的痕迹,肯定就是程序员写的代码,EnableWindow有两个参数一个是窗口句柄,一个是BOOL类型的,如果是false则窗口被禁用,是true则被启用。
我们看图片,有两个push 一个是push 0x0,一个是push 0x3E8,这个0x0很有BOOL类型参数的嫌疑,如果怀疑,我们就修改一下汇编代码试一试,将push 0x0修改为push 0x1,保存成另外的exe文件。
打开新保存的exe文件,就会显示“开启MFC之门”的按钮被点亮了