最近出差,一周没更新了,现在来学习下tutorial04的CrackMe。
实验工具:x64dbg
这个tutorial的目标是去除pixtopainbook1.07这个程序的限制,并且对其进行绿化,所以首先点击程序安装它,安装好之后的界面如下图:
一、目标
(一)对于这个程序,我们大致需要做两类改动,一类是修改一些未注册的提示,大概有三处,如下图
(二)另外一类是去除功能限制,添加entity和group的时候用数量上的限制,如下图
二、分析
(一)、首先使用peid查壳,没有壳,C++编写的。
(二)、用x64dbg载入
(三)、按F9跑起来,会发现x32dbg会中断在一个地方,如下图
C++的异常处理,应该是SEH,因此按Shift+F9,程序主界面出现。
(四)、首先处理两个功能限制
方法很多,可以通过检索限制的字符串或者MessageboxAPI找到相关的代码段。
这里我再介绍个小技巧:
首先让限制的对话框弹出,接着暂停x32dbg,再按alt+f9返回用户代码处,最后点击限制对话框的确定按钮,x32dbg就会自动返回到messagebox的call语句的下一句,如下图:
我们单步再向前把RET 0xC执行完,就可以到达限制功能的判断区域了
如图JL(jmp less)这个跳转应该就是限制功能挑战的语句了,修改JL为jmp
此时我们再添加entities,已经不弹窗了,同样添加group也是一样的套路,大佬们再试试吧~~。
(五)、接下来处理字符串
首先,查找字符串
再在内存窗口中转到字符串的地址。
然后修改之。
再看程序~~~
还有两处字符串,我用x32dbg死活找不到,一度以为是图片资源,后来知道了这么个事情:
有可能data和res节区的数据,再代码区找不到,只有直接在内存里搜索(并且是Unicode)。
如下图:
三、总结
1.SEH和shift+F9的使用
2.首先让限制的对话框弹出,接着暂停x32dbg,再按alt+f9返回用户代码处,最后点击限制对话框的确定按钮。
3.有可能data和res节区的数据,再代码区找不到,只有直接在内存里搜索(各种编码都试试,不一定是uncide)。
4.其实可以直接找到此程序的未注册判断代码区,就该判断注册与否那个跳转,用搞这么多其他的东西,但为了学习还是多折腾下吧。。。