160个破解练习之CrackMe 001 Acid burn
这款软件的破解相对比较简单,但内容比较齐全,首先打开软件,发现有一个弹窗如下:
这个弹窗可以使用爆破。
进入后,软件的主界面如下:
需要破解的地方有两个,一个是用户名/密码,一个是单独的序列号。
我们首先破解序列号,首先用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相关推荐
- 【CrackMe 实战】逆向破解实战之 001 Acid burn.exe
CrackMe:是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能 ...
- Crackme之Acid burn.exe
破解关键: 通过定位而nop掉关键跳转,使MessageBox()弹出GOOd 首先将程序载入OD,F9开始运行,有两种登录方式 (1)输入序列号和名称和(2)单独输入序列号 先随便输入,点击chec ...
- 160个破解练习之CrackMe 005 CKme002
注:分析的过程借鉴了吾爱论坛的一篇文章 文章地址: https://www.52pojie.cn/thread-366291-1-1.html 首先打开软件,界面如下: (软件加了upx的壳,先找个 ...
- 逆向破解之160个CrackMe —— 001
CrackMe -- 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 160 - 1 Acid burn
环境:Windows XP sp3 先打开,看看长什么样: OD载入,右键->查找->所有参考文本字串 找到Sorry,The serial is incorect 找到后就在反汇编窗口跟 ...
- 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 ...
- 逆向project实战--Acid burn
0x00 序言 这是第二次破解 crackme 小程序,感觉明显比第一次熟练.破解过程非常顺利,差点儿是分分钟就能够找到正确的 serial,可是我们的目标是破解计算过程.以下将具体介绍. 0x01 ...
- cracked me.1. Acid burn
作为一个小菜.最近在52pojie上看了一些逆向破解的知识. 发现论坛有160个crack me.觉得不错.拿来做做. 这可把一个没基础没经验的我 弄得是稀里糊涂昏天黑地.看着前辈的经验贴,才有点懂. ...
- [反汇编练习]160个CrackMe之001
[反汇编练习] 160个CrackMe之001. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
最新文章
- 【ACM】杭电OJ 2039
- express运行原理
- .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新
- 在Android项目中使用AspectJ
- GridView详解
- 利用melendy插入参考文献_如何利用mendeley搞定SCI论文参考文献,这篇一定要看
- hitool备份3798固件方法_创维E900s海思3798芯片当贝桌面不拆机通刷固件及刷机教程201910版...
- 【原生JS】js小数正则
- 部分转 Java读取ini配置
- 拓端tecdat|SAS,R和Python应对数据管理和分析挑战
- VSCode修改字体的方法
- matlab复杂网络上的博弈演化,科学网—复杂网络上的演化博弈研究 - 汪秉宏的博文...
- Blackman 窗函数
- numpy矢量化运算
- 网站能使用微软雅黑字体吗?是否会构成侵权?微软雅黑有版本吗?
- python实现2000投影坐标转经纬度
- Python 3.X 用Thinker做任意多边形的缩放图(一)
- 什么是EOS(柚子)
- Vue全家桶+MongoDB+Koa2全栈开发网站
- python 绘图英文字体_如何在matplotlib和networkx中显示非英语字体?
热门文章
- Qt 5.9.1 参考手册 QtTest 第5章 写一个基准线
- 阿里内部总结的微服务笔记,从入门到精通
- 基于Java毕业设计疫情小区通报系统源码+系统+mysql+lw文档+部署软件
- C语言实现巴特沃斯低通滤波器
- android中计算机源代码,Android源代码查看途径
- OOA OOP OOD
- deepin更新失败_linux deepin 系统升级失败解决办法
- 我们在配置OpenAL的时候到底做了什么
- TAURUS GAME FINANCE(金牛游戏金融平台)3位一体综合性产业平台
- HTK工具箱的安装和使用(WAV到MFCC)