Windows逆向(五)AJJ_1【*】

该实例来自于“吾爱破解”网站《160个CrackMe》系列中的一个。

长这样:

改例子的难点在于关键点定位,我的思路是先搜索全局字符串,查看是否能找到相关点,事实证明,没有找到;紧接着我开始尝试分析API,查看后发现引用API非常之多且不是我熟悉的API(一开始我一直这是MFC开发的软件),仔细看了一下引用模块,发现是Delphi开发的,通过API中较靠后的一个showwindow可以跟到鼠标放到下面灰色区域的弹出框响应,这里对应了鼠标在灰色区域的停留事件的响应和处理,再往上API太多,没有继续跟踪,决定转换思路。

先让程序完全跑起来,填入用户名和注册码,没有任何弹窗或者界面之类的响应,没办法,只能暂停一下看看程序在做什么,F12暂停后,ALT+K查看堆栈调用,发现程序在循环等待事件:

此时问题陷入僵局:如想要注册,起码需要定位到注册事件的发起点,而使用OD进行分析,最好的方式就是通过API去定位,比如获取编辑框的输入,成功后加载图片等,而这些接口我都不熟,通过目前定位的等待事件,理论上也可以进行逐步跟踪,一直找到对事件处理的所有分支,查看分支逻辑,找到关键点,不过这样做需要对大量的代码进行跟踪,明显不是我想要的。此时又需要找找其他方法了。

在本例中,最核心的问题即找到事件发起点的反汇编位置,查阅了其他逆向人员对该例的逆向过程后,也证实了该问题。一般使用Dark或Dede枚举界面中的所有处理事件,根据事件分析隐藏起来的触发方式,当然,该例中的问题在实际逆向过程较难遇到,不过对学习还是很有帮助。

使用Dede(Delphi DeCompiler)对界面进行分析:

通过该软件可迅速定位各控件的事件,到这一步就比较简单了,同上一个例子没有本质区别了,这里跳过不再赘述。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注