来 吾友们 !!!!!!
大佬们 试试 算出注册码无壳{:1_918:}:lol:lol:lol:lol
成功提示:注册成功
失败提示:注册失败{:1_918:} 账号第一个字符*字符串长度
密码((字符-0x30)*0xA)*字符串长度
对么 红颜世家、 发表于 2020-2-14 01:57
账号第一个字符*字符串长度
密码((字符-0x30)*0xA)*字符串长度
对么
可以带上分析代码 大家学习学习 puggs 发表于 2020-2-14 02:05
可以带上分析代码 大家学习学习
直接打了个printf断点一路看过去的...
构造可以直接按照密码反推过去计算账号
账号VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
密码
XXXXXXXXXX
显示注册成功了
源码公布一下大家一起相互学习
int main()
{
char strName = {0};
char strSerial = { 0 };
int hashName = 0;
int hashSerial = 0;
while (true) {
printf("\n请输入Name(字符必须是A-Z的范围):");
scanf("%s", strName);
printf("请输入Serial(字符必须是A-Z的范围):");
scanf("%s", strSerial);
for (int i = 0; i < strlen(strName); i++)
{
char tempNum = *((char*)strName);
hashName += tempNum;
}
hashName ^= 0x5678;
for (int j = 0; j < strlen(strSerial); j++)
{
char tempNum = *((char*)strSerial);
hashSerial += (tempNum - '0') * 0xA;
}
hashSerial ^= 0x1234;
if (hashSerial == hashName)
{
printf("\n注册成功!\n");
}
else
{
printf("\n注册失败!\n");
}
}
}
我的电脑跑不起来楼主的程序,重新安装组件都不行...
IDA查看main函数
mov esi, esp
push offset Format ; "\n请输入Name(字符必须是A-Z的范围)"
call ds:printf
add esp, 4
cmp esi, esp
call j___RTC_CheckEsp
mov esi, esp
lea eax,
push eax
push offset aS_0 ; "%s"
call ds:scanf
add esp, 8
cmp esi, esp
call j___RTC_CheckEsp
mov esi, esp
push offset aSerialAZ ; "请输入Serial(字符必须是A-Z的范围)"
反正我是打不开的 1111111111 这个改MTD调式 就不会出现缺少什么库 的问题了吧
页:
[1]