破解练习-CRACKME001
001-注册算法分析
一、工具和调试环境
- 动态调试工具:
x64dbg - 系统环境:
win10 1909
二、分析Serial/name的算法
由于Serial里面就是一个字符串比较,没有啥算法,这里就不详细说了,大概就是通过搜索字符串Failed,就能定位到关键位置,Serial直接可以在栈中观察到,为:Hello Dude!。所以我们主要分析Serial/name的注册算法。
直接使用提示字符串验证,得到错误提示如下

那么我们直接搜索字符串Sorry,得知有两个地方使用该字符串,都设置上断点,然后重新验证,成功断在0x0042F826处,先分析这个,另一个后面再说

断下之后向上定位到关键算法如下
0042FA87 | 8B45 F0 | mov eax,dword ptr ss:[ebp-10] | [ebp-10]:"Please enter your name !" ; 获取name首地址
0042FA8A | 0FB600 | movzx eax,byte ptr ds:[eax] | ; eax = name[0] 取出name的第一个字符存放在eax中
0042FA8D | F72D 50174300 | imul dword ptr ds:[431750] | 00431750:L")" ; ")" aiscii码为 0x29 eax = name[0] * 0x29
0042FA93 | A3 50174300 | mov dword ptr ds:[431750],eax | ; key = name[0] * 0x29
0042FA98 | A1 50174300 | mov eax,dword ptr ds:[431750] | ;
0042FA9D | 0105 50174300 | add dword ptr ds:[431750],eax | ; key = name[0] * 0x29 * 2
通过算法key = name[0] * 0x29 * 2算出key后,紧接着拼接得到Serial,格式为:CW-key-CRACKED
三、算法核心代码模拟
char* GetSerial(char* szName)
{
static char szSerial[60] = {};
if (strlen(szName) < 4)
{
MessageBox(NULL, "Name至少需要4位", "温馨提示", MB_OK);
return nullptr;
}
int key = szName[0] * 0x29 * 2;
sprintf(szSerial, "CW-%d-CRACKED", key);
return szSerial;
}
破解练习-CRACKME001的更多相关文章
- CrackMe005-下篇 | 逆向破解分析 | 160个CrackMe(视频+图文)深度解析系列
作者:逆向驿站微信公众号:逆向驿站知乎:逆向驿站 CrackMe005,上篇说了具体方法,下篇来发逆向分析过程,看看老夫是如何得到上篇的具体方法的! 准备 [环境和工具] win7/xp虚拟机环境 C ...
- 逆向破解之160个CrackMe —— 001(上)
CrackMe--001 前置知识介绍: 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合,一共160个待逆向破解的程序 CrackMe:一些公开给别人尝试破解的小程序,制 ...
- Kali对wifi的破解记录
好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...
- 对抗密码破解 —— Web 前端慢 Hash
(更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...
- Syscan360会议胸牌破解揭秘
Syscan360会议胸牌破解揭秘 背景 有幸参加今年11月份的上海Syscan360安全会议,会议期间有一个亮点就是360的独角兽团队设计了一款电子badge(胸牌)供参加人员进行破解尝试,类似于美 ...
- “不给力啊,老湿!”:RSA加密与破解
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 加密和解密是自古就有技术了.经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫 ...
- C# 破解 Reflector8.5
一.分析 破解.net .dll,可以使用reflector,但官方提供的reflector是需要购买的,因此,破解reflector势在必行. 二.破解Reflector具体步骤 下面为详细的破解步 ...
- CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15
之前有位搞平面的好友“小瘦”说CDR X8无法破解,只能用X7.呃……呃……呃……好像是的 其实CDR8难激活主要在于一个点“没有离线激活了,只可以在线激活”,逆天不是专供逆向的,当然没能力去破解,这 ...
- 破解SQLServer for Linux预览版的3.5GB内存限制 (UBUNTU篇)
在上一篇中我提到了如何破解RHEL上SQLServer的内存大小限制,但是Ubuntu上还有一道检查 这篇我将会讲解如何在3.5GB以下内存的Ubuntu中安装和运行SQLServer for Lin ...
- 破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇)
微软发布了SQLServer for Linux,但是安装竟然需要3.5GB内存,这让大部分云主机用户都没办法尝试这个新东西 这篇我将讲解如何破解这个内存限制 要看关键的可以直接跳到第6步,只需要替换 ...
随机推荐
- IO多路复用的理解/演变过程
目录 阻塞IO 非阻塞 IO select epoll 总结一下. 阻塞IO 服务端为了处理客户端的连接和请求的数据,写了如下代码. listenfd = socket(); // 打开一个网络通信端 ...
- Python 学习思路 思维导图 Xmind
如果需要,请在评论区留下邮箱,我看到后会一次发送.
- 实现Swaggera的在线接口调试
1.访问Swagger的路径是:http://localhost:8080/swagger-ui.html 如果项目正常,则可看到如下界面: 2.点开下面的随意一个方法 如add添加数据的方法,展开: ...
- 2022春每日一题:Day 20
题目:Secret Message 老师说的trie树入门题 对于每个密码,存入trie树,每个字符对应编号i,则sum[i]++,最后结尾的编号为j,cnt[j]++ 查询,每个字符对应编号为i,不 ...
- Day17:稀疏数组的超细详解
稀疏数组的超细详解 一个含有大量重复元素的二维数组,我们可以提取其有效元素,压缩空间,整合为一个稀疏数组. 例如一个五子棋棋盘,我们将棋盘看作为一个二维数组,没有棋子的位置为0:黑棋为1:白棋为2: ...
- vue-element Form表单验证没错却一直提示错误
在使用element-UI 的表单时,发生一个验证错误,已输入值但验证的时候却提示没有输入 修改前 <el-form-item>中的prop绑定的是cus_name,而item里面的控件绑 ...
- Azure DevOps Server 用户组加入 Azure AD Domain Service 管理用户
一,引言 今天我们继续讲解 Azure DevOps Server 的内容,对于管理用户组除了在 Azure DevOps Server 服务器上添加管理员方式外,还有没有其他方式,Azure Dev ...
- CodeGeeX:vscode中全新的智能代码补全插件
大家好我是费老师,代码智能补全是近几年非常热门的话题,有前不久宣告项目终结的kite,反响平平的tabnine,以及最近吃了一堆官司的copilot. 而广大从事编程工作的用户只关心市面上的代码智能补 ...
- 关于Wegame页面空白的问题解决
前言 前几天帮亲戚家装电脑系统,装好后发现 wegame 所有页面都不能正确加载(全部是空白页面),很神奇,在网上找了很多种解决办法都没有效果,后来不过细心的我发现360浏览器一直提示我证书不安全过期 ...
- Excel2010表格内容被加密,无法编辑内容。
Sub PasswordBreaker() Dim i As Integer, j As Integer, k As Integer Dim l As Integer, m As Integer, n ...