WinRAR工具在论坛里面其实有很多破解的文章了,很多都是学习黑客反汇编揭秘的文章后用IDA逆向暴力破解。最近刚好更新了WinRAR软件版本,附上用OD调试的破解过程。
一、软件安装好以后,标题框提示评估版本。未注册版本可以使用40天。无壳软件。
二、拖入OD,查找字符串。结果没有找到任何有用的信息
。但是仔细观察软件的窗口,还是可以发现软件内部有很多信息框和字符串的。
三、拖入eXeScope,找到了以下信息。
870,注册失败 0x366
871,感谢您的支持! 0x365
872,注册正确 0x368
873,评估版本 0x369
874,离购买许可只剩 %d 天了 0x36a
960,已注册给
四、继续拖入OD。查找命令(Ctrl+F),push 366,这条指令是可以找到的。因为软件本身就没有注册按钮,所以注册失败这里是不会跑到的。定位到push 369,这里是可以断下的。
向上翻,找到这里:
004B164C . 803D C03C4F00>cmp byte ptr [4F3CC0], 0
004B1653 . 8B0D 24054E00 mov ecx, dword ptr [4E0524]
004B1659 . 8B15 28054E00 mov edx, dword ptr [4E0528] ; WinRAR.00570020
004B165F . 8908 mov dword ptr [eax], ecx
004B1661 . 8B0D 2C054E00 mov ecx, dword ptr [4E052C]
004B1667 . 8950 04 mov dword ptr [eax+4], edx
004B166A . 8B15 30054E00 mov edx, dword ptr [4E0530] ; WinRAR.00410052
004B1670 . 8948 08 mov dword ptr [eax+8], ecx
004B1673 . 8B0D 34054E00 mov ecx, dword ptr [4E0534]
004B1679 . 8950 0C mov dword ptr [eax+C], edx
004B167C . 8948 10 mov dword ptr [eax+10], ecx
004B167F . 0F85 D5000000 jnz 004B175A
经过分析,发现004B167F . 0F85 D5000000 jnz 004B175A这个跳转可以跳过类似没有注册成功或者是离购买许可只剩 %d 天了类似的信息。找到这里就简单了,可以清楚看到4F3CC0这个地址的值如果不为0那么就可以注册成功了。
五、重新开始,找到4F3CC0这个地址。里面的值是全0,下字节写入硬件断点。
004B1A71 . E8 5A5AFFFF call 004A74D0
004B1A76 . A2 C03C4F00 mov byte ptr [4F3CC0], al
004B1A7B > 33C0 xor eax, eax ; Default case of switch 004B2156
断在这里,是通过al的值写入到内存当中。进入call中修改al的值。
004A74FA |. B0 01 mov al, 1
004A74FC |. 5E pop esi
修改004A74FA 这句指令。让al中的值不等于0既可了。修改好后保存。
六、运行修改后的文件就是注册版本了。
[课程]Linux pwn 探索篇!