这款软件的破解相对比较简单,但内容比较齐全,首先打开软件,发现有一个弹窗如下:

这个弹窗可以使用爆破。

进入后,软件的主界面如下:

需要破解的地方有两个,一个是用户名/密码,一个是单独的序列号。

我们首先破解序列号,首先用OD加载软件,F9运行软件,打开序列号的窗口如下:

点击后发现弹出了一个弹窗,我们用OD进行智能搜索字符串Try,进到这里:

0042F48A  |.  8D45 FC       lea eax,[local.1]
0042F48D  |.  BA 40F54200   mov edx,Acid_bur.0042F540                ;  Hello
0042F492  |.  E8 7142FDFF   call Acid_bur.00403708
0042F497  |.  8D45 F8       lea eax,[local.2]
0042F49A  |.  BA 50F54200   mov edx,Acid_bur.0042F550                ;  Dude!
0042F49F  |.  E8 6442FDFF   call Acid_bur.00403708
0042F4A4  |.  FF75 FC       push [local.1]
0042F4A7  |.  68 60F54200   push Acid_bur.0042F560
0042F4AC  |.  FF75 F8       push [local.2]
0042F4AF  |.  8D45 F4       lea eax,[local.3]
0042F4B2  |.  BA 03000000   mov edx,0x3
0042F4B7  |.  E8 F044FDFF   call Acid_bur.004039AC
0042F4BC  |.  8D55 F0       lea edx,[local.4]
0042F4BF  |.  8B83 E0010000 mov eax,dword ptr ds:[ebx+0x1E0]
0042F4C5  |.  E8 8EB5FEFF   call Acid_bur.0041AA58
0042F4CA  |.  8B45 F0       mov eax,[local.4]
0042F4CD  |.  8B55 F4       mov edx,[local.3]
0042F4D0  |.  E8 2745FDFF   call Acid_bur.004039FC
0042F4D5      75 1A         jnz short Acid_bur.0042F4F1              ;  不要跳转
0042F4D7  |.  6A 00         push 0x0
0042F4D9  |.  B9 64F54200   mov ecx,Acid_bur.0042F564                ;  Congratz!
0042F4DE  |.  BA 70F54200   mov edx,Acid_bur.0042F570                ;  God Job dude !! =)
0042F4E3  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042F4E8  |.  8B00          mov eax,dword ptr ds:[eax]
0042F4EA  |.  E8 81ACFFFF   call Acid_bur.0042A170
0042F4EF  |.  EB 18         jmp short Acid_bur.0042F509
0042F4F1  |>  6A 00         push 0x0
0042F4F3  |.  B9 84F54200   mov ecx,Acid_bur.0042F584                ;  Failed!
0042F4F8  |.  BA 8CF54200   mov edx,Acid_bur.0042F58C                ;  Try Again!!
0042F4FD  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042F502  |.  8B00          mov eax,dword ptr ds:[eax]
0042F504  |.  E8 67ACFFFF   call Acid_bur.0042A170

很明显,在弹出错误弹窗前有一个jmp可以跳过错误提示,但前面的jnz跳转又跳过了jmp,因此只要jnz不跳转就   可以爆破了,第一个 方法就是直接把jnz进行nop填充。那么很明显,jnz前面的call就是关键call了,作用就是用输入的序列号和真实的序列号进行比较, 通过前面的固定字符串和栈中的数据可以很明显的发现真实的序列号就是 Hello Dude!

再来看用户名/序列号部分,我们首先随便输入一个用户名/序列号,提示如下错误:

同样搜索字符串 sorry,得到地址如下:

0042FA52  |.  E8 D96EFDFF   call Acid_bur.00406930
0042FA57  |.  83F8 04       cmp eax,0x4                              ;  长度是否大于4
0042FA5A  |.  7D 1D         jge short Acid_bur.0042FA79
0042FA5C  |.  6A 00         push 0x0
0042FA5E  |.  B9 74FB4200   mov ecx,Acid_bur.0042FB74                ;  Try Again!
0042FA63  |.  BA 80FB4200   mov edx,Acid_bur.0042FB80                ;  Sorry , The serial is incorect !
0042FA68  |.  A1 480A4300   mov eax,dword ptr ds:[0x430A48]
0042FA6D  |.  8B00          mov eax,dword ptr ds:[eax]
0042FA6F  |.  E8 FCA6FFFF   call Acid_bur.0042A170
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]              ;  eax为输入的用户名,这里取第一个字符
0042FA8D  |.  F72D 50174300 imul dword ptr ds:[0x431750]             ;  与0x29相乘
0042FA93  |.  A3 50174300   mov dword ptr ds:[0x431750],eax
0042FA98  |.  A1 50174300   mov eax,dword ptr ds:[0x431750]          ;  相当于再乘以2
0042FA9D  |.  0105 50174300 add dword ptr ds:[0x431750],eax          ;  地址0x431750保存了中间数值字符串的数值
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]                           ;  Acid_bur.0042FBAC
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                   ;  关键call,比较
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]
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]
0042FB32  |.  E8 39A6FFFF   call Acid_bur.0042A170

通过汇编代码分析,发现有两处进行了错误弹出,上面错误信息弹出是判断输入的用户名长度是否大于4,小于4则弹出错误信息。第二处,在弹出错误信息上方有个jmp可以跳过错误提示,同样上面的jnz跳过了jmp,因此只要将jnz进行nop就可以进行爆破。

因此,前面的call就是关键call,用于正确的序列号和输入的序列号进行比较,当用户名是123456,真实的序列号是CW-4018-CRACKED,换一次用户名,发现真实的序列号前后部分是固定的,而中间部分,通过上面的汇编代码分析,是取用户名第一个字符的ASCII码,乘以十六进制0x29再乘以2,得到的数值转成字符串。

至于打开前的弹窗,可以用同样的方法进行爆破。

160个破解练习之CrackMe 001 Acid burn相关推荐

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

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

  2. Crackme之Acid burn.exe

    破解关键: 通过定位而nop掉关键跳转,使MessageBox()弹出GOOd 首先将程序载入OD,F9开始运行,有两种登录方式 (1)输入序列号和名称和(2)单独输入序列号 先随便输入,点击chec ...

  3. 160个破解练习之CrackMe 005 CKme002

    注:分析的过程借鉴了吾爱论坛的一篇文章  文章地址: https://www.52pojie.cn/thread-366291-1-1.html 首先打开软件,界面如下: (软件加了upx的壳,先找个 ...

  4. 逆向破解之160个CrackMe —— 001

    CrackMe -- 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  5. 160 - 1 Acid burn

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

  6. 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 ...

  7. 逆向project实战--Acid burn

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

  8. cracked me.1. Acid burn

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

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

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

最新文章

  1. 【ACM】杭电OJ 2039
  2. express运行原理
  3. .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新
  4. 在Android项目中使用AspectJ
  5. GridView详解
  6. 利用melendy插入参考文献_如何利用mendeley搞定SCI论文参考文献,这篇一定要看
  7. hitool备份3798固件方法_创维E900s海思3798芯片当贝桌面不拆机通刷固件及刷机教程201910版...
  8. 【原生JS】js小数正则
  9. 部分转 Java读取ini配置
  10. 拓端tecdat|SAS,R和Python应对数据管理和分析挑战
  11. VSCode修改字体的方法
  12. matlab复杂网络上的博弈演化,科学网—复杂网络上的演化博弈研究 - 汪秉宏的博文...
  13. Blackman 窗函数
  14. numpy矢量化运算
  15. 网站能使用微软雅黑字体吗?是否会构成侵权?微软雅黑有版本吗?
  16. python实现2000投影坐标转经纬度
  17. Python 3.X 用Thinker做任意多边形的缩放图(一)
  18. 什么是EOS(柚子)
  19. Vue全家桶+MongoDB+Koa2全栈开发网站
  20. python 绘图英文字体_如何在matplotlib和networkx中显示非英语字体?

热门文章

  1. Qt 5.9.1 参考手册 QtTest 第5章 写一个基准线
  2. 阿里内部总结的微服务笔记,从入门到精通
  3. 基于Java毕业设计疫情小区通报系统源码+系统+mysql+lw文档+部署软件
  4. C语言实现巴特沃斯低通滤波器
  5. android中计算机源代码,Android源代码查看途径
  6. OOA OOP OOD
  7. deepin更新失败_linux deepin 系统升级失败解决办法
  8. 我们在配置OpenAL的时候到底做了什么
  9. TAURUS GAME FINANCE(金牛游戏金融平台)3位一体综合性产业平台
  10. HTK工具箱的安装和使用(WAV到MFCC)