欢迎光临!
若无相欠,怎会相见

[CrackMe] 160个CrackMe之008-Andrénalin.1.exe

序言

柿子还是找软的捏,找了一个一星的题目,算是最简单的了

开始破解

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

赞(0) 打赏
转载请注明:飘零博客 » [CrackMe] 160个CrackMe之008-Andrénalin.1.exe
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临