本帖最后由 currwin 于 2013-12-30 14:03 编辑
首先,说到标题名字什么的,最简单的便是直接搜索相关字符串了,恩恩,没有,看来这作者也留了一点心眼。没关系我们还有SetWindowTextA或SendMessageA这两大神器,这里,使用SetWindowTextA就足够了,停在这里
Alt+F9返回到程序领空
此时,可以想到只要改变在地址006B610C中参数push的值的话就可以改变标题了。不过看一看参数入栈时的push [arg.2],这货居然入栈堆栈的地址了!恩,那么这里一定是CALL中的子CALL,我们向上翻一下,果然,显示下面显示出一堆调用源头,没办法,在这里再浪费时间也是白费心机,单步出去吧。出去后发现又是一个子CALL,再次步过。终于在我们的面前出现了主程序。
奇怪,怎么会是一片平原?难道就没有一些类似入栈相关字符串的操作的地方么,至少给我来一点起伏好不好!!!搜索一下字符串,依然什么都没有!!
难道是加密的字符串??我们重启程序,在关键CALL附近找找。恩恩,还是连条草都没有,既然如此,那么我们就深入关键CALL中,寻找那一朵红花。
没走几步就到了
到这里就一目了然了,用lstrcpy复制字符串给eax所指向的地址,紧接着马上利用eax来改变标题,这就完成了标题的设定。那么我们只要改变该地址的字符串就可以达到我们想要改变标题的目的了。但这可是一个子CALL啊,有非常多的地方调用到这里,总不能修改这吧!
现在让我们来跟踪这个神奇的字符串,push dword ptr ds:[esi+0xAC]是一个相对寻址,难不成这字符串的位置也是动态的?我们数据窗口中跟随。注意这里是lstrcpy入栈的一个字符串指针参数,所以我这里跟随的地方应该是 d 021B7158。
看到这个地址,还真心是令我心灰意冷了,这都不知道超出程序段几条街了。不过,细心的同学可能就会发现,线索就在这下面不远。一个在主目录下Local\License.ini的文件中。果不其然,这个文件存储了我们注册信息。汗一个,也不能改这个文件。没关系,只要知道有这个文件存在就已经是一个重大突破了。有兴趣的同志可以在这里进行突破,重载程序后搜索字符串License.ini下断,这以后便是一堆算法了。爆破后就可以达到通过修改License.ini里面的信息来达到修改文件标题的作用了。我这里并不打算爆破它。而是打算修改这个字符串。 可以看到,这个字符串是从文件中读取进来的,每一次所在的位置都会改变,并且它会直接用于改变软件标题,所以直接改变它是不可能的。恩,这个时候应该怎么做呢。。。。。。好了,我们来写一个内存补丁吧!! 因为不能够直接修改这个子CALL中的内容,所以我们就在外面主程序中的关键call中进行patch。 首先,我们往后翻,在data段中找到一段空数据段来写入我们想要的数据,这里,我使用00729E80,直接二进制编辑写入自己的标题。
接着在text段中找到一段空数据写入我们要注入的代码,恩,就选在006E1F00吧。我们的目的是令00729E80所指的字符串覆盖它原先的字符串,那么我们要先找到他原来的字符串的位置。翻了翻代码,发现是push dword ptr ds:[esi+0xAC],然后往前面找,还有个mov ecx,edi mov esi,ecx,所以综合来说就是ds:[edi+0xAC], 故此,代码如下: LOOP: Mov esi,edi Mov ebx,ds:[esi+0xAC] Mov edx,00729E800 Xor ecx,ecx Mov al,byte ptr ds:[ecx+edx] Mov byte ptr ds:[ecx+ebx],al Cmp al,0x0 Jz END Inc ecx Jmp LOOP END: 因为是Patch的代码,所以要保证Patch前后各寄存器的值不变,并且保证Patch的地方只运行一次,所以最终的代码如下:
最后,直接修改006C018C的关键CALL为jmp 到006E1F00 我们想要的地方,就大功告成了。
虽然是成功了,但我还是有一点问题,希望大牛们能够不吝赐教。 ①我本来想用kernel32.lstrcpyA来进行字符串的复制,结果产生错误了,这是为什么? ②Patch后我本来想直接还原原来的CALL,于是用 Mov dword ptr ds:[006C018C],00 1C A2 E8 Mov byte ptr ds:[006C0190],00 结果产生写入违规的异常,这又是发生了什么问题? ③貌似程序有对代码进行检测,patch后的程序在打开后会自动把输入焦点交给打开它的文件夹,这种情况应该如何解决?
最后,发一个破解后的链接
免CB 传送门Patch: http://pan.baidu.com/s/1kY9hO
源安装文件:http://pan.baidu.com/s/1eQtDPQU |