飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3785|回复: 3

[求助] 在IDA pro中的这样一段反编译代码能够改写成易语言吗

[复制链接]
  • TA的每日心情
    奋斗
    2023-11-29 18:29
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    发表于 2017-1-7 16:39:17 | 显示全部楼层 |阅读模式
    反编译一个dll插件,选取其中一段进行交流,如何将以下代码改写成易语言
    希望有大神能给点提示,或直接改写出来以供参考。



    int __cdecl sub_10007B40(int a1, _BYTE *a2, signed int a3, unsigned int a4)
    {
      int result; // eax@1
      char *v5; // ebp@3
      signed int v6; // ebx@3
      int v7; // esi@3
      int v8; // eax@8
      char *v9; // ecx@12
      char *v10; // ecx@15
      int v11; // eax@14
      int v12; // ebx@25
      int v13; // edx@32
      unsigned int v14; // ecx@35
      char v15; // al@35
      char *v16; // edi@35
      int v17; // eax@39
      int v18; // ebx@44
      char v19[256]; // [sp+4h] [bp-100h]@32
      result = dword_1010DB24;
      if ( dword_1010DB24 >= 3 )
      {
        result = (int)a2;
        if ( a2 )
        {
          v5 = (char *)(dword_1010DB4C + dword_1010DB30 + 260);
          v6 = 0;
          v7 = dword_1010DB40;
          if ( dword_1010DB40 == -1 )
            v7 = a1;
          if ( dword_10110070 )
          {
            *v5 = 91;
            v6 = 1;
          }
          if ( dword_10110060
            || (v8 = *(_DWORD *)(dword_1010DB30 + 772) & 0xF0, v8 == 48)
            || v8 == 224
            || *(_DWORD *)(dword_1010DB30 + 772) & 1 )
          {
            if ( a4 >= 0xB )
            {
              v10 = aPtr_0;
              if ( dword_10110070 )
                v10 = Caption;
              v11 = sprintf(&v5[v6], aIByteS, a4, v10);
            }
            else
            {
              v9 = aPtr_0;
              if ( dword_10110070 )
                v9 = Caption;
              v11 = sprintf(&v5[v6], aSS, off_10107F6C[a4], v9);
            }
            v6 += v11;
          }
          if ( (dword_1011005C || v7 != a1) && v7 != -1 )
            v6 += sprintf(&v5[v6], aS_0, off_10107F4C[v7]);
          if ( !dword_10110070 )
            v5[v6++] = 91;
          v12 = sprintf(&v5[v6], aS, a2) + v6;
          if ( dword_10110084 )
            strlwr(v5);
          if ( a3 )
          {
            if ( dword_1011008C && dword_1010DB24 >= 4 && (v13 = sub_100DE0F0(a3, v19, 232 - v12, 0), v13 > 0) )
            {
              if ( *a2 )
                v5[v12++] = 43;
              v14 = strlen(v19) + 1;
              v15 = v14;
              v14 >>= 2;
              qmemcpy(&v5[v12], v19, 4 * v14);
              v16 = &v5[4 * v14] + v12;
              v12 += v13;
              qmemcpy(v16, &v19[4 * v14], v15 & 3);
            }
            else
            {
              if ( a3 < 0 && a3 > -16384 && *a2 )
              {
                v17 = sprintf(&v5[v12], aLx, -a3);
              }
              else
              {
                if ( *a2 )
                  v5[v12++] = 43;
                v17 = sprintf(&v5[v12], aLx_0, a3);
              }
              v12 += v17;
            }
          }
          else if ( !*a2 )
          {
            v5[v12++] = 48;
          }
          v5[v12] = 93;
          v18 = v12 + 1;
          v5[v18] = 0;
          result = v18 + dword_1010DB4C;
          dword_1010DB4C += v18;
        }
      }
      return result;
    }
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    4 天前
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2017-1-9 09:51:57 | 显示全部楼层
    首先你明白这段代码在干什么~~ 然后就和什么语言无关了~

    点评

    大神这句话是对的。。。哈哈!!!说白了就是你能看懂反编译出来的是什么,然后你爱怎么玩就怎么玩。  详情 回复 发表于 2017-1-12 12:37
    首先动态调试一下了解各个参数变量是干什么的,再用ida看函数流程功能、然后用什么语言都能写出相应功能代码  详情 回复 发表于 2017-1-12 11:27
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-12-29 21:52
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2017-1-12 11:27:19 | 显示全部楼层
    飘云 发表于 2017-1-9 09:51
    首先你明白这段代码在干什么~~ 然后就和什么语言无关了~


    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:58
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    发表于 2017-1-12 12:37:39 | 显示全部楼层
    飘云 发表于 2017-1-9 09:51
    首先你明白这段代码在干什么~~ 然后就和什么语言无关了~

    大神这句话是对的。。。哈哈!!!说白了就是你能看懂反编译出来的是什么,然后你爱怎么玩就怎么玩。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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