吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2195|回复: 4

[原创逆向图文] [原创逆向图文] 新手学破解记录贴【160个CrackMe】之002

[复制链接]
表姐夫丶 发表于 2024-11-23 15:01 | 显示全部楼层 |阅读模式

   本人刚刚入门汇编逆向破解分析,本帖将记录我对160个CrackMe程序中的第002程序的分析过程。在学习的过程中,我会边学边记录。如果有不正确之处,还请各位指正。

程序没有壳查壳步骤略过,直接打开程序看一下运行过程。跟上一个第一个程序类似 要输入正确的用户名和密码才可以正确提示。

fakename.png

现在拖入x32dng来分析一下,首先进行搜索字符串的操作。既然 YouGetWrong 这个字符串是错误的提示 哪上面的YouGetIt就是正确的提示了,
我们在正确提示处下一个断点在运行重新注册试一下。
fakename.png


定位到字符串的代码处 发下上面有一个关键跳转,跳过了这正确的提示。 直接把这个跳转nop掉 让他不进行跳转 就直接爆破成功了。
fakename.png
fakename.png


至此爆破就算完成了 在来分析一下密码生成的算法。首先在这个函数头部下一个断点进行汇编代码的分析。
fakename.png


上面汇编代码没什么太重要的一直F8到 0x402412地址 发现把用户名作为参数传给下面的CALL 这个CALL返回了用户名的长度 然后用 长度乘以0x17CFB
在加上用户名首个字符转换成十进制之后就是975407
fakename.png

继续按F8跟进一直到0x0040251C这个地址,这个CALL传入了3个参数 输入的密码 常量AKA- 之前计算出来的数值 也就是 975407,
经过这个CALL之后返回了拼接后的字符串 AKA-975407 这个也就是正确的密码。
fakename.png




总结: 第一部分代码 通过 用户名长度 乘以0x17CFB 在加上用户名首个字符 计算出来的数值转成十进制,
用户名长度是 10 对应16进制 0xA  用户名首字符 a对应16进制0x61  相当于 0xA* 0x17CFB+0x61=0xEE22F  也就是十进制的975407

[Asm] 纯文本查看 复制代码
00402409 | 8B95 50FFFFFF            | mov edx,dword ptr ss:[ebp-B0]           |
0040240F | 8B45 E4                  | mov eax,dword ptr ss:[ebp-1C]           | 用户名变量
00402412 | 50                       | push eax                                | eax:L"AKA-975407"
00402413 | 8B1A                     | mov ebx,dword ptr ds:[edx]              | ebx:__vbaObjSet
00402415 | FF15 E4404000            | call dword ptr ds:[<__vbaLenBstr>]      | 返回用户名长度
0040241B | 8BF8                     | mov edi,eax                             | edi:__vbaStrCat, eax:L"AKA-975407"
0040241D | 8B4D E8                  | mov ecx,dword ptr ss:[ebp-18]           | [ebp-18]:L"asasas"
00402420 | 69FF FB7C0100            | imul edi,edi,17CFB                      | 用户名长度乘以0x17cfb
00402426 | 51                       | push ecx                                |
00402427 | 0F80 91020000            | jo <afkayas.1.sub_4026BE>               |
0040242D | FF15 F8404000            | call dword ptr ds:[<Ordinal#516>]       | 取用户名首字符
00402433 | 0FBFD0                   | movsx edx,ax                            |
00402436 | 03FA                     | add edi,edx                             | 之前计算过的 用户名长度*0x17CFB+用户名首字符
00402438 | 0F80 80020000            | jo <afkayas.1.sub_4026BE>               |
0040243E | 57                       | push edi                                | edi:__vbaStrCat
0040243F | FF15 E0404000            | call dword ptr ds:[<__vbaStrI4>]        | edi的值 16进制转换十进制 



第二部分代码 通过之前计算出来的975407 前面在拼接上固定值 AKA- 最终的结果就是 “AKA-975407”

[Asm] 纯文本查看 复制代码
0040251C | 50                       | push eax                                | eax:L"AKA-975407"
0040251D | 68 701B4000              | push afkayas.1.401B70                   | 401B70:L"AKA-"
00402522 | 51                       | push ecx                                |
00402523 | FFD7                     | call edi                                | 拼接传入的AKA- 和之前计算的 975408



注册机编写:
[C++] 纯文本查看 复制代码
#include <iostream>
#include <string>
using namespace std;


int main()
{
	string str;
	cout << "请输入账号:" << endl;
	cin >> str;
	int len = str.length();
	char ch = str[0];
	int num = len * 0x17CFB + ch;

	string key = "AKA-"+ to_string(num);
	cout<< "您的注册key:" << key << endl;
	return 0;
}

fakename.png

点评

ml1600”点评说:
这个应该是我们新手学习的课件之一吧。。  发表于 2024-11-24 14:06

评分

参与人数 1HB +1 收起 理由
小才不才 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
三斤回锅肉 发表于 2024-11-23 17:12 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
学编程的闹钟 发表于 2024-11-23 17:55 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小才不才 发表于 2024-11-23 20:20 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表