我好大家好 发表于 2023-5-29 14:08

逆向求助,反汇编一个软件,进去看不懂了

目标软件:https://wwp.lanzouy.com/u/lanlajiao
番茄lol挂机

基于学习的目的,研究了几天,想着如何修改剩余可用时间,被我找到了一个重要线索 0045BF3D ,但里面的东西我看不大懂了,求大佬帮忙逆向分析修改剩余时间,教教我如何分析!

(这个断点要等软件加载完毕再打开,大概是打开软件等15秒,输入试用的验证码点击确定前再打开!会有几次循环,大概循环第10次左右,剩余时间就会被加载了)

另外,找到了其他几个有趣的断点
00404AC8   nop   
0040BD90nop
00413207一系列的验证破解事件,需要jmp
004166C9nop
0041DA2F      
0041DA56   

teety 发表于 2023-5-29 18:44

本帖最后由 teety 于 2023-5-29 19:01 编辑

void 登录按钮_被单击()
{
char *c; // eax
char *v2; // eax
const char *v3; // eax
char *v4; //
char *v5; //
BOOL v6; //
char *v7; //
char *lpMem; //
char *lpMema; //
char *lpMemb; //
void *lpMemc; //

if ( dword_A57FC8 )
{
    按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, (UNIT_PROPERTY_VALUE)1, 0);
    c = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
    lpMem = c;
    if ( !c )
      c = (char *)&byte_579333;
    v5 = 核心支持库命令((unsigned int)取文本长度, 1, c, 0, -2147483644).c;
    if ( lpMem )
      释放内存(lpMem);
    if ( (int)v5 > 16 || (int)v5 < 6 )
    {
      连续省略参数(6);
      核心支持库命令((unsigned int)信息框, 4, &unk_579334, 0, -2147483644, 0, 0, -2147482879);
      编辑框::编辑框1_写属性_内容(
      0x52010002u,
      0x16010008u,
      8u,
      0xFFFFFFFF,
      (UNIT_PROPERTY_VALUE)&byte_579333,
      0);
    }
    else
    {
      lpMema = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
      v6 = 文本比较_0(lpMema, (char *)&byte_579333) == 0;
      if ( lpMema )
      释放内存(lpMema);
      if ( v6 )
      {
      连续省略参数(6);
      核心支持库命令((unsigned int)信息框, 4, &unk_579349, 0, -2147483644, 0, 0, -2147482879);
      }
      else
      {
      v2 = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
      lpMemb = v2;
      if ( !v2 )
          v2 = (char *)&byte_579333;
      核心支持库命令(
          (unsigned int)写配置项,
          4,
          "c:\\【QQ号隐藏】\\gj-data.ini",
          0,
          -2147483644,
          &byte_579358,
          0,
          -2147483644,
          &byte_579358,
          0,
          -2147483644,
          v2,
          0,
          -2147483644);
      if ( lpMemb )
          释放内存(lpMemb);
      if ( dword_A57FC8 == 1 )
      {
          lpMemc = (void *)sub_402067();
          v7 = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
          v4 = 文本相加(5, &unk_57937E, v7, "]*", lpMemc, "*");
          if ( v7 )
            释放内存(v7);
          if ( lpMemc )
            释放内存(lpMemc);
          v3 = v4;
          if ( !v4 )
            v3 = &byte_579333;
          核心支持库命令((unsigned int)客户.发送数据, 2, 1375797250, 369164293, 65573, v3, 0, -2147483644);
          if ( v4 )
            释放内存(v4);
      }
      sub_401E0E(2000, 1, 0i64, 0);
      按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, 0, 0);
      }
    }
}
else
{
    sub_401552();
    按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, (UNIT_PROPERTY_VALUE)1, 0);
    按钮::登录按钮_写属性_标题(
      0x52010002u,
      0x16010006u,
      0xAu,
      0xFFFFFFFF,
      (UNIT_PROPERTY_VALUE)&unk_57931C,
      0);
    sub_401E0E(2000, 1, 0i64, 0);
    按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, 0, 0);
    按钮::登录按钮_写属性_标题(
      0x52010002u,
      0x16010006u,
      0xAu,
      0xFFFFFFFF,
      (UNIT_PROPERTY_VALUE)&unk_57932E,
      0);
}
}



void sub_401552()
{
char *c; // eax
const char *v1; // eax
char *v2; // eax
char *v3; //
char *v4; //
char *v5; //
char *v6; //
LPVOID lpMem; // BYREF

if ( !dword_A57FC8 )
{
    c = 核心支持库命令((unsigned int)转换为IP地址, 1, "【此处服务器域名地址隐藏】", 0, -2147483644).c;
    lpMem = c;
    if ( !c )
      c = (char *)&byte_579333;
    v4 = 核心支持库命令(
         (unsigned int)客户.连接,
         3,
         1375797250,
         369164293,
         65573,
         c,
         0,
         -2147483644,
         3344,
         0,
         -2147482879).c;
    if ( lpMem )
      释放内存(lpMem);
    if ( v4 == (char *)1 )
    {
      dword_A57FC8 = 1;
    }
    else
    {
      lpMem = "【此处服务器域名地址隐藏】";
      v5 = (char *)sub_40176A(&lpMem);
      if ( lpMem )
      释放内存(lpMem);
      v1 = v5;
      if ( !v5 )
      v1 = &byte_579333;
      v3 = 核心支持库命令(
             (unsigned int)客户.连接,
             3,
             1375797250,
             369164293,
             65573,
             v1,
             0,
             -2147483644,
             3344,
             0,
             -2147482879).c;
      if ( v5 )
      释放内存(v5);
      if ( v3 == (char *)1 )
      {
      dword_A57FC8 = 1;
      }
      else
      {
      v2 = 核心支持库命令((unsigned int)转换为IP地址, 1, "【此处服务器域名地址隐藏】", 0, -2147483644).c;
      lpMem = v2;
      if ( !v2 )
          v2 = (char *)&byte_579333;
      v6 = 核心支持库命令(
               (unsigned int)客户.连接,
               3,
               1375797250,
               369164293,
               65573,
               v2,
               0,
               -2147483644,
               3344,
               0,
               -2147482879).c;
      if ( lpMem )
          释放内存(lpMem);
      dword_A57FC8 = v6 == (char *)1;
      }
    }
}
}

我好大家好 发表于 2023-5-29 20:01

teety 发表于 2023-5-29 18:44
void 登录按钮_被单击()
{
char *c; // eax


你咋能看源码?还有分析过程呢。。。。

teety 发表于 2023-5-29 22:37

本帖最后由 teety 于 2023-5-29 22:42 编辑

我好大家好 发表于 2023-5-29 20:01
你咋能看源码?还有分析过程呢。。。。
IDA修改版 + E语言反汇编插件,另外该软件还有使用定时器周期性向服务器发送验证信息

我好大家好 发表于 2023-5-30 08:04

本帖最后由 我好大家好 于 2023-5-30 10:24 编辑

teety 发表于 2023-5-29 22:37
IDA修改版 + E语言反汇编插件,另外该软件还有使用定时器周期性向服务器发送验证信息
能不能吧进入后的剩余时间改掉呢?定时发送的我再看
页: [1]
查看完整版本: 逆向求助,反汇编一个软件,进去看不懂了