一DLL里,用IDA反出来
char *__cdecl sub_10001270()
{
int v0; // esi@1
char *v1; // ebx@2
int v2; // ebp@2
char v3; // al@9
char v4; // cl@9
char Str; // [sp+Ah] [bp-46h]@4
char v7; // [sp+Bh] [bp-45h]@4
char v8; // [sp+Ch] [bp-44h]@6
char v9; // [sp+Dh] [bp-43h]@6
char v10; // [sp+Eh] [bp-42h]@8
char v11; // [sp+Fh] [bp-41h]@8
char DstBuf; // [sp+10h] [bp-40h]@3
char v13; // [sp+11h] [bp-3Fh]@6
char v14; // [sp+12h] [bp-3Eh]@8
__int16 v15; // [sp+14h] [bp-3Ch]@3
char v16; // [sp+16h] [bp-3Ah]@3
unsigned int v17; // [sp+18h] [bp-38h]@1
char Source; // [sp+1Ch] [bp-34h]@1
char v19; // [sp+1Dh] [bp-33h]@1
char v20; // [sp+4Dh] [bp-3h]@1
Source = Text;
v0 = 1;
memset(&v19, 0, 0x30u);
v20 = 0;
dword_10007254 = 7;
v17 = (strlen("677B6B7031352C796F7B2D7559675873627526676D3671686C7576775D3377812F382F35696B6632607A67") - 1) >> 1;
if ( (signed int)v17 >= 1 )
{
v2 = v17;
v1 = &Dest[1];
do
{
v15 = 0;
v16 = 0;
DstBuf = Text;
itoa(v0, &DstBuf, 10);
if ( strlen(&DstBuf) == 2 )
{
Str = DstBuf;
v7 = 0;
v2 = atoi(&Str);
}
if ( strlen(&DstBuf) == 3 )
{
v9 = 0;
v8 = v13;
v2 = atoi(&v8);
}
if ( strlen(&DstBuf) == 4 )
{
v10 = v14;
v11 = 0;
v2 = atoi(&v10);
}
v4 = *v1;
LOBYTE(v15) = *(v1 - 1);
HIBYTE(v15) = v4;
v16 = 0;
v3 = strtol((const char *)&v15, 0, 16);
switch ( v2 )
{
case 1:
++v3;
goto LABEL_18;
case 2:
v3 -= 7;
goto LABEL_18;
case 3:
case 5:
v3 += 9;
goto LABEL_18;
case 6:
v3 -= 6;
goto LABEL_18;
case 7:
v3 += 3;
goto LABEL_18;
case 8:
v3 -= 2;
goto LABEL_18;
case 9:
v3 += 8;
goto LABEL_18;
case 0:
v3 -= 4;
goto LABEL_18;
case 4:
LABEL_18:
*((_BYTE *)&v17 + v0 + 3) = v3;
break;
default:
break;
}
++v0;
v1 += 2;
}
while ( v0 <= (signed int)v17 );
}
memset("677B6B7031352C796F7B2D7559675873627526676D3671686C7576775D3377812F382F35696B6632607A67", 0, 0x64u);
Dest[100] = 0;
dword_10007254 = 7;
return strncpy(
"677B6B7031352C796F7B2D7559675873627526676D3671686C7576775D3377812F382F35696B6632607A67",
&Source,
0x65u);
}
直接丢VC6.0新建立的工程里,编译提示
D:\project\TestExe\CS\CS.CPP(33) : error C2065: 'Text' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(37) : error C2065: 'dword_10007254' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(42) : error C2065: 'Dest' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(42) : error C2109: subscript requires array or pointer type
D:\project\TestExe\CS\CS.CPP(42) : error C2102: '&' requires l-value
D:\project\TestExe\CS\CS.CPP(68) : error C2106: '=' : left operand must be l-value
D:\project\TestExe\CS\CS.CPP(69) : error C2106: '=' : left operand must be l-value
D:\project\TestExe\CS\CS.CPP(71) : warning C4244: '=' : conversion from 'long' to 'char', possible loss of data
D:\project\TestExe\CS\CS.CPP(101) : error C2065: '_BYTE' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(101) : error C2059: syntax error : ')'
D:\project\TestExe\CS\CS.CPP(112) : error C2109: subscript requires array or pointer type
D:\project\TestExe\CS\CS.CPP(112) : error C2106: '=' : left operand must be l-value
求教,怎么修改后,可以编译?
IDA里的很多命名方式和C++,貌似不太一样
附件在下面
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法