吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2502|回复: 22
收起左侧

[原创] 【反汇编练习】160个CrackME中的158 一字节爆破

  [复制链接]
yingzi4f 发表于 2024-3-6 12:36
【反汇编练习】160个CrackME 中的158

160个CrackMe的打包文件下载地址:
https://www.lanzoub.com/ipwFHha3bbcc52pj

看了158的破解链接:http://www.52pojie.cn/forum.php? ... 470028&pid=12114184 @反沉沦
发现写出了算法,但我用他的keygen 跑步来的code点了没反应.. 那我来个爆破的方法吧~

首先OD载入,查找字符串
发现REGISTERED可疑。 点开跟进去
image.png



进入该函数看了下,应该是一个弹窗
image.png

汇编不太行,直接载入IAD看伪代码吧.... 刚拿到IDAPRO8.3试试 效果,里面预装了CHATGPT插件,可以分析函数
IDA进入 00401509 地址
image.png

F5 反编译成C代码,
image.png

然后直接 GPT插件无脑翻译下看看..


[C] 纯文本查看 复制代码
// ---GPT_START---
// 预期目的:该函数的预期目的是更新totalSum的值,然后根据totalSum和dword_409784的比较结果来进行一系列操作。
// 
// 参数的作用:参数hDlg是窗口的句柄,参数hInstance是模块的实例句柄。
// 
// 详细功能:首先计算totalSum并判断其值是否超过0x7FFFFFFF,然后更新dword_409770的值为totalSum。接着如果dword_409784的值等于totalSum,则将字符串"aRegistered"写入到byte_409800中,并设置窗口的文本为该字符串。然后获取窗口中ID为1004的控件的句柄并启用该控件,接着调用DialogBoxParamA函数显示一个对话框,并禁用窗口中ID为1003的控件。
// 
// 新的函数名字:updateRegistrationStatus
// ---GPT_END---
void __cdecl sub_4014E0(HWND hDlg, HINSTANCE hInstance)
{
  int totalSum; // ecx
  HWND regControl; // eax
  HWND control; // eax

  totalSum = dword_4097AC + dword_409770;
  if ( (unsigned int)(dword_4097AC + dword_409770) > 0x7FFFFFFF )
    totalSum -= 0x7FFFFFFF;
  dword_409770 = totalSum;
  if ( dword_409784 == totalSum )
  {
    wsprintfA(byte_409800, aRegistered);
    SetDlgItemTextA(hDlg, 1006, byte_409800);
    regControl = GetDlgItem(hDlg, 1004);
    EnableWindow(regControl, 1);
    DialogBoxParamA(hInstance, (LPCSTR)0x68, hDlg, DialogFunc, 0);
    control = GetDlgItem(hDlg, 1003);
    EnableWindow(control, 0);
  }
}



改函数的功能:首先计算totalSum并判断其值是否超过0x7FFFFFFF,然后更新dword_409770的值为totalSum。接着如果dword_409784的值等于totalSum,则将字符串"aRegistered"写入到byte_409800中,并设置窗口的文本为该字符串。然后获取窗口中ID为1004的控件的句柄并启用该控件,接着调用DialogBoxParamA函数显示一个对话框,并禁用窗口中ID为1003的控件。

也就是说,key成功匹配后,点击确定就会弹窗出来。现在我们想办法跳转到这里就行!

直接看401509的汇编, 然后结合下上下文。
意思就是如果不相等 这个JNZ就会跳走。
我们直接nop掉就OK , 只需要改这里一下
image.png


image.png
点了确定之后, 之前的确定按钮会变灰, 功能没






image.png

免费评分

参与人数 6吾爱币 +12 热心值 +4 收起 理由
yp17792351859 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Issacclark1 + 1 谢谢@Thanks!
eijop252023 + 1 谢谢@Thanks!
xiaobinwang + 1 + 1 谢谢@Thanks!
wengl123 + 1 + 1 感谢大佬分享!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ingIM 发表于 2024-3-7 20:01
此处注册状态是字符串常量,用IDA翻一下rdata,从调用往回看流程图的跳转能快很多

无保护可以直接用IDA下断,有GPT分析直接断到伪代码上也许更方便
原贴那个keygen能用,但有些类型要手动补一下:
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <tchar.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char   szVolumeName[256] = { 0 };
    char szName[32] = { 0 };
    char szCompany[32] = { 0 };
    char szSerial[64] = { 0 };
    unsigned int nNameLength, nValue, nCompanyLength, i, m, n, k, nGroupValue, nTimeValue;
    char p[] = "?Etn5Pnc5AXi1DFlkYqnujsXNmvHdbcrqOoT8aaV5DkaymMRkPkoQ.";
    char q[] = "fQObVwNOankJ5skqJvae3Ae5jdoETu5n02J6Ez85430PNSDAPjDrYgFaze9VDRjq";
    char szMonth[] = ".9803D2F7404E";
    char szDay[] = ".F3A4BF3B0503FB8BCB4F49803D5C740";
    SYSTEMTIME st;

    GetLocalTime(&st);
    nTimeValue = szMonth[st.wMonth];
    nTimeValue *= ((unsigned int)szDay[st.wDay]);

    printf("请输入Name:");
    gets_s(szName, 32);
    nNameLength = (UINT32)strlen(szName);
    if (1 > (UINT32)nNameLength)
    {
        printf("\r\n输入Name的长度必须大于0\r\n");
        system("pause");
        return 0;
    }

    printf("请输入Group:");
    gets_s(szCompany, 32);
    nCompanyLength = (UINT32)strlen(szCompany);
    if (1 > (UINT32)nCompanyLength)
    {
        printf("\r\n输入group的长度必须大于0\r\n");
        system("pause");
        return 0;
    }
    nGroupValue = 0;
    for (i = 0; i < nCompanyLength - 1; i++)
    {
        k = szCompany[i];
        m = q[i];
        n = p[i + 1];
        k *= m * n;
        k *= (i + 1);
        nGroupValue += k;
    }

    nValue = 0;
    for (i = 0; i < nNameLength - 1; i++)
    {
        k = (UINT8)szName[i]; 
        m = (UINT8)q[i];
        n = p[i + 1];
        k *= m * n;
        k *= (i + 1);
        nValue += k;
    }

    nValue += nGroupValue + nTimeValue;


    if (nValue > 0x7FFFFFFF)
        nValue -= 0x7FFFFFFF;
    printf("%d\r\n", nValue);
    system("pause");
    return 0;
}


我不会逆算法只能下断拿key,什么时候能才能和大佬一样变成key的生产者_(:3」∠)_
想问楼主的GPT插件怎么开的,我也是在这个贴里面下的但是没有,外面搜到的插件是直接要token的

免费评分

参与人数 1吾爱币 +8 热心值 +1 收起 理由
Hmily + 8 + 1 用心讨论,共获提升!

查看全部评分

lvdousha123123 发表于 2024-3-8 17:08
co2qy 发表于 2024-3-6 15:00
dewei_k 发表于 2024-3-6 19:25
yingzi4f 发表于 2024-3-6 13:25
https://www.lanzoub.com/ipwFHha3bbc 52pj

非常感谢
wengl123 发表于 2024-3-6 12:43
感谢大佬分享!
dewei_k 发表于 2024-3-6 13:16
文件分享取消了,麻烦重新分享一下,谢谢
 楼主| yingzi4f 发表于 2024-3-6 13:25
dewei_k 发表于 2024-3-6 13:16
文件分享取消了,麻烦重新分享一下,谢谢

https://www.lanzoub.com/ipwFHha3bbc 52pj
zhoobt 发表于 2024-3-6 13:32
谢谢 有用的着
不约儿童 发表于 2024-3-6 14:32
谢谢 有用的着
xiaobinwang 发表于 2024-3-6 16:13
谢谢有用
sototo 发表于 2024-3-7 00:16
非常有用!!感谢!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 21:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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