破解关键:

通过定位而nop掉关键跳转,使MessageBox()弹出GOOd

首先将程序载入OD,F9开始运行,有两种登录方式

(1)输入序列号和名称和(2)单独输入序列号

先随便输入,点击check it baby,结果弹窗弹出以下内容

此时先不要点击确定按钮,回到OD暂停程序,然后查看K窗口,因为有弹窗的出现,在OD的调用函数中去寻找MessageBox函数

K:调用堆栈,可以通过它找到调用某一个函数的位置,通常会被用于查找关键代码

根据函数的范围

可以判断出第一个MessageBox位于系统领空,而第二个位于用户领空

所以选中第二个MessageBox右键——show call 查看相应调用

0042A170  /$  55            push ebp
0042A171  |.  8BEC          mov ebp,esp
0042A173  |.  83C4 F4       add esp,-0xC
0042A176  |.  53            push ebx
0042A177  |.  56            push esi
0042A178  |.  57            push edi
0042A179  |.  8BF9          mov edi,ecx
0042A17B  |.  8BF2          mov esi,edx
0042A17D  |.  8BD8          mov ebx,eax
0042A17F  |.  E8 7CB4FDFF   call <jmp.&user32.GetActiveWindow>       ; [GetActiveWindow
0042A184  |.  8945 F8       mov [local.2],eax
0042A187  |.  33C0          xor eax,eax
0042A189  |.  E8 12A0FFFF   call Acid_bur.004241A0
0042A18E  |.  8945 F4       mov [local.3],eax
0042A191  |.  33C0          xor eax,eax
0042A193  |.  55            push ebp
0042A194  |.  68 D0A14200   push Acid_bur.0042A1D0
0042A199  |.  64:FF30       push dword ptr fs:[eax]
0042A19C  |.  64:8920       mov dword ptr fs:[eax],esp
0042A19F  |.  8B45 08       mov eax,[arg.1]
0042A1A2  |.  50            push eax                                 ; /Style = MB_OK|MB_APPLMODAL
0042A1A3  |.  57            push edi                                 ; |Title = "@"
0042A1A4  |.  56            push esi                                 ; |Text = 00000102 ???
0042A1A5  |.  8B43 24       mov eax,dword ptr ds:[ebx+0x24]          ; |
0042A1A8  |.  50            push eax                                 ; |hOwner = NULL
0042A1A9  |.  E8 FAB5FDFF   call <jmp.&user32.MessageBoxA>           ; \MessageBoxA

在栈帧初始部分push ebp下断点

然后运行程序,继续点击check it baby,此时程序在0042A170断点处断开,查看堆栈窗口

是谁调用了MessageBox函数

点击该字符串右键——follow in disassembler

0042FA74  |. /E9 BE000000   jmp Acid_bur.0042FB37
0042FA79  |> |8D55 F0       lea edx,[local.4]
0042FA7C  |. |8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
0042FA82  |. |E8 D1AFFEFF   call Acid_bur.0041AA58
0042FA87  |. |8B45 F0       mov eax,[local.4]
0042FA8A  |. |0FB600        movzx eax,byte ptr ds:[eax]
0042FA8D  |. |F72D 50174300 imul dword ptr ds:[0x431750]
0042FA93  |. |A3 50174300   mov dword ptr ds:[0x431750],eax
0042FA98  |. |A1 50174300   mov eax,dword ptr ds:[0x431750]
0042FA9D  |. |0105 50174300 add dword ptr ds:[0x431750],eax
0042FAA3  |. |8D45 FC       lea eax,[local.1]
0042FAA6  |. |BA ACFB4200   mov edx,Acid_bur.0042FBAC                ;  CW
0042FAAB  |. |E8 583CFDFF   call Acid_bur.00403708
0042FAB0  |. |8D45 F8       lea eax,[local.2]
0042FAB3  |. |BA B8FB4200   mov edx,Acid_bur.0042FBB8                ;  CRACKED
0042FAB8  |. |E8 4B3CFDFF   call Acid_bur.00403708
0042FABD  |. |FF75 FC       push [local.1]
0042FAC0  |. |68 C8FB4200   push Acid_bur.0042FBC8                   ;  -
0042FAC5  |. |8D55 E8       lea edx,[local.6]
0042FAC8  |. |A1 50174300   mov eax,dword ptr ds:[0x431750]
0042FACD  |. |E8 466CFDFF   call Acid_bur.00406718
0042FAD2  |. |FF75 E8       push [local.6]
0042FAD5  |. |68 C8FB4200   push Acid_bur.0042FBC8                   ;  -
0042FADA  |. |FF75 F8       push [local.2]
0042FADD  |. |8D45 F4       lea eax,[local.3]
0042FAE0  |. |BA 05000000   mov edx,0x5
0042FAE5  |. |E8 C23EFDFF   call Acid_bur.004039AC
0042FAEA  |. |8D55 F0       lea edx,[local.4]
0042FAED  |. |8B83 E0010000 mov eax,dword ptr ds:[ebx+0x1E0]
0042FAF3  |. |E8 60AFFEFF   call Acid_bur.0041AA58
0042FAF8  |. |8B55 F0       mov edx,[local.4]
0042FAFB  |. |8B45 F4       mov eax,[local.3]
0042FAFE  |. |E8 F93EFDFF   call Acid_bur.004039FC
0042FB03     |75 1A         jnz short Acid_bur.0042FB1F
0042FB05  |. |6A 00         push 0x0
0042FB07  |. |B9 CCFB4200   mov ecx,Acid_bur.0042FBCC                ;  Congratz !!
0042FB0C  |. |BA D8FB4200   mov edx,Acid_bur.0042FBD8                ;  Good job dude =)
0042FB11  |. |A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FB16  |. |8B00          mov eax,dword ptr ds:[eax]               ;  Acid_bur.00424090
0042FB18  |. |E8 53A6FFFF   call Acid_bur.0042A170
0042FB1D  |. |EB 18         jmp short Acid_bur.0042FB37
0042FB1F  |> |6A 00         push 0x0
0042FB21  |. |B9 74FB4200   mov ecx,Acid_bur.0042FB74                ;  Try Again!
0042FB26  |. |BA 80FB4200   mov edx,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FB2B  |. |A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FB30  |. |8B00          mov eax,dword ptr ds:[eax]               ;  Acid_bur.00424090
0042FB32  |. |E8 39A6FFFF   call Acid_bur.0042A170
0042FB37  |> \33C0          xor eax,eax

可以看到有两个关键跳转,若想要成功登录,需要将jnz给nop掉,点击jnz右键——Binary——Fill with Nops。

重新运行程序,再次点击check it baby即弹出Good

注册机算法

在跳转的上面一行call处下段点,运行程序,点击check it baby 触发断点,此时查看寄存器区域中,EDX寄存器存储着刚输入的serial

堆栈区域内容如下

在EAX中存储着一个特殊序列,猜测可能是正确的序列号,然后将刚才设置的断点取消,在OD中重新运行程序,成功!!!!!

0042FA79  |> |8D55 F0       lea edx,[local.4]
0042FA7C  |. |8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC]
0042FA82  |. |E8 D1AFFEFF   call Acid_bur.0041AA58   ;获取账户,字符串首地址存储在EBP-0x10处
0042FA87  |. |8B45 F0       mov eax,[local.4]
0042FA8A  |. |0FB600        movzx eax,byte ptr ds:[eax]
0042FA8D  |. |F72D 50174300 imul dword ptr ds:[0x431750]
0042FA93  |. |A3 50174300   mov dword ptr ds:[0x431750],eax
0042FA98  |. |A1 50174300   mov eax,dword ptr ds:[0x431750]
0042FA9D  |. |0105 50174300 add dword ptr ds:[0x431750],eax
0042FAA3  |. |8D45 FC       lea eax,[local.1]
0042FAA6  |. |BA ACFB4200   mov edx,Acid_bur.0042FBAC                ;  CW
0042FAAB  |. |E8 583CFDFF   call Acid_bur.00403708                    ;将CA字符串存储在EBP-0x4处
0042FAB0  |. |8D45 F8       lea eax,[local.2]
0042FAB3  |. |BA B8FB4200   mov edx,Acid_bur.0042FBB8                ;  CRACKED
0042FAB8  |. |E8 4B3CFDFF   call Acid_bur.00403708                   ;将CRACKED字符串存储在EBP-0x8处
0042FABD  |. |FF75 FC       push [local.1]
0042FAC0  |. |68 C8FB4200   push Acid_bur.0042FBC8                   ;  -
0042FAC5  |. |8D55 E8       lea edx,[local.6]
0042FAC8  |. |A1 50174300   mov eax,dword ptr ds:[0x431750]
0042FACD  |. |E8 466CFDFF   call Acid_bur.00406718                    ;将0x431750存储的十六进制转换成字符串,地址存储在EBP-0x18处
0042FAD2  |. |FF75 E8       push [local.6]
0042FAD5  |. |68 C8FB4200   push Acid_bur.0042FBC8                   ;  -
0042FADA  |. |FF75 F8       push [local.2]
0042FADD  |. |8D45 F4       lea eax,[local.3]
0042FAE0  |. |BA 05000000   mov edx,0x5
0042FAE5  |. |E8 C23EFDFF   call Acid_bur.004039AC                    ;字符串拼接。(EBP-0X4)+(EBP-0X18)+(EBP-0X8) 存储在ebp-0xC
0042FAEA  |. |8D55 F0       lea edx,[local.4]
0042FAED  |. |8B83 E0010000 mov eax,dword ptr ds:[ebx+0x1E0]
0042FAF3  |. |E8 60AFFEFF   call Acid_bur.0041AA58                    ;得到输入的密码
0042FAF8  |. |8B55 F0       mov edx,[local.4]
0042FAFB  |. |8B45 F4       mov eax,[local.3]
0042FAFE  |. |E8 F93EFDFF   call Acid_bur.004039FC                    ;输入的密码与程序计算出来的KEY做比较
0042FB03     |75 1A         jnz short Acid_bur.0042FB1F                ;call的返回值不等于0则跳转到输出错误信息。
0042FB05  |. |6A 00         push 0x0
0042FB07  |. |B9 CCFB4200   mov ecx,Acid_bur.0042FBCC                ;  Congratz !!
0042FB0C  |. |BA D8FB4200   mov edx,Acid_bur.0042FBD8                ;  Good job dude =)
0042FB11  |. |A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FB16  |. |8B00          mov eax,dword ptr ds:[eax]               ;  Acid_bur.00424090
0042FB18  |. |E8 53A6FFFF   call Acid_bur.0042A170
0042FB1D  |. |EB 18         jmp short Acid_bur.0042FB37
0042FB1F  |> |6A 00         push 0x0
0042FB21  |. |B9 74FB4200   mov ecx,Acid_bur.0042FB74                ;  Try Again!
0042FB26  |. |BA 80FB4200   mov edx,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FB2B  |. |A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FB30  |. |8B00          mov eax,dword ptr ds:[eax]               ;  Acid_bur.00424090
0042FB32  |. |E8 39A6FFFF   call Acid_bur.0042A170
0042FB37  |> \33C0          xor eax,eax

关于只有序列号的登录

关键就在于jnz上一行的call,F7 跟进后

此时各寄存器的值为

可以看到EDX寄存器中是固定的字符串Hello Dube!

而EAX中存储的值是自己手动输入的序列号,可以看到代码中有cmp eax,edx

故猜测通过序列号登录可能是固定的序列号

160个CrackMe - 001 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

[反汇编练习]160个CrackMe之001 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

Crackme之Acid burn.exe相关推荐

  1. 【CrackMe 实战】逆向破解实战之 001 Acid burn.exe

    CrackMe:是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能 ...

  2. 160个破解练习之CrackMe 001 Acid burn

    这款软件的破解相对比较简单,但内容比较齐全,首先打开软件,发现有一个弹窗如下: 这个弹窗可以使用爆破. 进入后,软件的主界面如下: 需要破解的地方有两个,一个是用户名/密码,一个是单独的序列号. 我们 ...

  3. 160 - 1 Acid burn

    环境:Windows XP sp3 先打开,看看长什么样: OD载入,右键->查找->所有参考文本字串 找到Sorry,The serial is incorect 找到后就在反汇编窗口跟 ...

  4. Target - Neewbie shool 1cme(Acid Burn cme)

    Target - Neewbie shool 1cme(Acid Burn cme) Obti瀗ost - 1/10 Nastroje - jen OllyDBG 1.10(ke stahnuti n ...

  5. 逆向project实战--Acid burn

    0x00 序言 这是第二次破解 crackme 小程序,感觉明显比第一次熟练.破解过程非常顺利,差点儿是分分钟就能够找到正确的 serial,可是我们的目标是破解计算过程.以下将具体介绍. 0x01 ...

  6. cracked me.1. Acid burn

    作为一个小菜.最近在52pojie上看了一些逆向破解的知识. 发现论坛有160个crack me.觉得不错.拿来做做. 这可把一个没基础没经验的我 弄得是稀里糊涂昏天黑地.看着前辈的经验贴,才有点懂. ...

  7. [反汇编练习]160个CrackMe之001

    [反汇编练习] 160个CrackMe之001. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  8. 视频+图文+注册+机源码 | 160个CrackMe深度解析合集 | 逆向破解入门

    全部合集的获取请关注微信公众号:逆向驿站 回复:160 即可获得其余合集 以下是示例文章 160个CrackMe深度解析合集-001 提倡"刨根问底",拒绝"浅尝辄止&q ...

  9. CrackMe_001

    本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西. 其中,文章中按照如下逻辑编排(解决如 ...

最新文章

  1. 【Spring】银行转账案例
  2. Netty3 源代码分析 - NIO server绑定过程分析
  3. 皮一皮:当你在上海地铁里被夹住后...
  4. 获取Windwos的版本和名称 -- GetVersion|GetVersionEx
  5. 最全Windows下搭建go语言开发环境以及开发IDE
  6. jqGrid getGridParam办法
  7. python编程入门教程100例_Python3入门经典100例(60-70)
  8. 前端:高德地图快速入门使用
  9. 机器视觉牛人及其相关领域分类科普
  10. js字符串常用判断方法
  11. c语言编程图形并颜色,C语言图形编程(三、绘图函数1)
  12. MongoDB分片集群搭建
  13. jdbcType (null) combination
  14. Android使用MediaCodec进行视频编码 视频的一些基础概念介绍
  15. ActiveMQ消费者断开重连
  16. 牛客小白月赛60(A~C)题解
  17. Informatica元数据库解析
  18. jsvascript === 和==的区别
  19. 想转行人工智能?机会来了!!!
  20. 云服务器vCPU和CPU有什么区别?

热门文章

  1. python刷题:哥德巴赫猜想
  2. 年终盘点跨平台技术(Hybrid、RN、Weex、Flutter)-全栈系列
  3. 第十二届全国大学生信息安全竞赛-RE部分WP(目前前两题,待更)
  4. Redis的客户端Jedis
  5. MySQL基础之索引
  6. 信息化,不只是技术-某公司局域网改造实例(转)
  7. python中numpy.random.gamma()函数
  8. 京东数据分析软件 | 如何获取京东平台的“增长榜单”
  9. 向指定的excel文件中追加数据
  10. 安卓(Android)手机Flash Player官方下载地址