本人逆向小白,具有一定的编程基础,初次写破解文章,上手了一个比较偏门的软件。下面是破解的过程。
1.安装软件VSPY3,导入license,关闭软件,再打开软件,发现软件加载完成后跳出license文件导入窗口,而且显示下面的信息。说明开机的时候检测license文件了。
2.先用notepad++打开license文件是一堆乱码。然后用hex方式读取文件转成16进制显示,截取部分数据如下:
3.下载三个工具,PEID,IDA,x96dbg。
打开peid查看软件信息,这个软件安装下来一两个G,看的是双击启动的那个exe信息。可以看到这个软件是Borland C++1999,网上查了下,这就是C++,所有的C++都是识别成这样的。这个应该是没有加壳的。
晚上睡觉前用IDA载入软件此软件,然后开始自动分析,第二天分析好了,具体分析了多久就不知道了,然后保存工程,以后打开直接用,这里就不贴图了。
4.下面就开始单步调试了,要找到计算license的位置,然后自己再写一个license生成工具。
用x96dbg载入文件。由于这个软件是32位的,所以就选择x32dbg了。
5.看了网上很多教程说从关键字符入手,查找字符找到关键位置然后爆破啥的。但是我是想做个license计算工具,爆破啥的就不考虑了。其实也去查找关键字符了,没啥收获。汇编啥的又不是太懂,还是慢慢捋一捋计算逻辑得了。
接下来从导入license的button入手。
6.button的响应函数怎么找呢,同样是各种上网查资料。
先在x32dbg中载入exe,然后一直run,跳过所有的异常断点,直到出现license警示窗体
7.此时在x32dbg中切换到句柄页面,右键刷新,在窗口标题一栏寻找”Add License File…”字样。
8.找到按钮的句柄就可以下消息断点了,右击选择消息断点,再选择WM_LBUTTONUP,确定。
9.这样当你左键单击”Add License File…”按钮时就会停在系统处理此按钮消息的位置。需要执行到用户程序。然后看到的才是真正的用户代码。
此时是第一次尝试,折腾了比较久,然后发现这个按钮只是打开了一个OpenFileDialog控件,也就是跟踪”Add License File…”这个按钮是没啥用的。
Ok,删掉这个断点。点击”Add License File…”按钮,弹出文件选择对话框。
这个对话框就比较直接了,对话框左上角显示“Select a License File” 右下角一个打开,一个取消按钮。
再次在句柄窗口中右键刷新,寻找两个控件,名字分别是“Select a License File”和“打开”。由于确定这种名字肯定比较多,所以要找到父
10.这样就找到了我们要的按钮了。按照上一个按钮的处理方法,断在按钮事件处理程序中。
11.接下来就是跟踪导入license后的计算代码部分程序了。用EXCEL记录了每一步的计算过程。
12.经过长时间的跟踪和记录,发现license计算一直是大数乘法。经过至少两周的跟踪发现处理了不到十分之一的计算过程。无再多的精力继续分析计算过程,本次破解以失败告终。
|