在IDA pro中的这样一段反编译代码能够改写成易语言吗
反编译一个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; // @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, aIByteS, a4, v10);
}
else
{
v9 = aPtr_0;
if ( dword_10110070 )
v9 = Caption;
v11 = sprintf(&v5, aSS, off_10107F6C, v9);
}
v6 += v11;
}
if ( (dword_1011005C || v7 != a1) && v7 != -1 )
v6 += sprintf(&v5, aS_0, off_10107F4C);
if ( !dword_10110070 )
v5 = 91;
v12 = sprintf(&v5, 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 = 43;
v14 = strlen(v19) + 1;
v15 = v14;
v14 >>= 2;
qmemcpy(&v5, v19, 4 * v14);
v16 = &v5 + v12;
v12 += v13;
qmemcpy(v16, &v19, v15 & 3);
}
else
{
if ( a3 < 0 && a3 > -16384 && *a2 )
{
v17 = sprintf(&v5, aLx, -a3);
}
else
{
if ( *a2 )
v5 = 43;
v17 = sprintf(&v5, aLx_0, a3);
}
v12 += v17;
}
}
else if ( !*a2 )
{
v5 = 48;
}
v5 = 93;
v18 = v12 + 1;
v5 = 0;
result = v18 + dword_1010DB4C;
dword_1010DB4C += v18;
}
}
return result;
}
首先你明白这段代码在干什么~~ 然后就和什么语言无关了~ 飘云 发表于 2017-1-9 09:51
首先你明白这段代码在干什么~~ 然后就和什么语言无关了~
飘云 发表于 2017-1-9 09:51
首先你明白这段代码在干什么~~ 然后就和什么语言无关了~
大神这句话是对的。。。哈哈!!!说白了就是你能看懂反编译出来的是什么,然后你爱怎么玩就怎么玩。
页:
[1]