序言
柿子还是找软的捏,找了一个一星的题目,算是最简单的了
开始破解
0x00 准备工作
工具:OllyDbg(吾爱破解)、exeinfo PE
CrackMe:Andrénalin.1.exe
0x01 查壳
exeinfo PE 工具查看该可执行文件是没有加壳的,是个VB程序
0x02 打开软件
直接打开软件,探索一下相关信息
由此可以知道字符串信息
0x03 爆破:暴力破解
在OD中搜索字符串
很棒,找到了成功的界面(通过联想),然后双击跳转到CPU窗口:
在“SuCCESFul !”字符串发现有je跳转,跳转线位红色的,说明当前跳转是可以进行的,继续往下拉:
上面的je跳转直接跳转到注册码错误的页面。我们可以尝试一下,不输入任何字符,是否会跳转到注册码失败的窗口,事实是这样的:
因此可以判定这是一个关键跳转,因此只需要把je跳转 nop 掉或者让他跳转到 00401DA3 即可,把命令改为 jmp 00401DA3
,这两种方法完成爆破:
0x04 追码
爆破修改了程序本身,技术含量没有获取注册码或算法高,接下来继续分析程序,在“success”上方发现有一个VB比较函数 __vbaStrCmp
00401D73 . 51 push ecx
00401D74 . 68 541A4000 push Andréna.00401A54 ; SynTaX 2oo1
00401D79 . FF15 08314000 call dword ptr ds:[<&MSVBVM50.__vbaStrCmp>] ; msvbvm50.__vbaStrCmp
这里有可能就是一个重要的地方,先用F2下断点,重载程序,运行起来,随便输入注册码,点击OK
在这里发现堆栈中有两个字符串,一个是自己输入的,一个是程序给的,分别是 push ecx
和 push 00401A54
指令压入堆栈的,然后在调用了字符串比较函数,因此可以猜测这个“SynTaX 2oo1”字符串就是注册码,尝试一下:
果然,“SynTaX 2oo1”就是程序的注册码。
结语
VB语言我没学过,也没精力学,刚开始看反汇编的时候,很懵逼,与C语言的反汇编相差有点儿大,不过再怎么大,指令还是一条一条的执行,因此不用完全理解,只需要连蒙带猜,大胆想象,勇敢尝试,达到目的即可,继续加油~
如有错误,敬请指出,感谢指正 — 2019-09-15 16:37:29
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了