动调,不然也没啥办法
主函数就是401000但是反编译不了,直接看下汇编,就是把一个个字节从401000开始写入栈,然后跳到401000处执行行,其实相当于一个shellcode
这块可以用程序导出来
void __usercall __noreturn sub_401000(unsigned int a1@<eax>, int a2@<edx>, unsigned int a3@<edi>)
{
_DWORD *v3; // esi
int i; // ecx
int v5; // edx
unsigned __int32 v6; // eax
int v7; // [esp+4h] [ebp-204h]
v3 = (_DWORD *)(v7 + 28);
for ( i = 479; i; --i )
{
*(_BYTE *)v3 ^= 0x66u;
v3 = (_DWORD *)((char *)v3 + 1);
}
v5 = *v3 + __CFADD__(MEMORY[0x150E6666], a2) + MEMORY[0x150E6666] + a2;
__outdword(v5, a1);
__indword(v5);
v6 = __indword(0xA0u);
__outdword(v5 + 1, v6);
__outdword(0xA7u, a3);
JUMPOUT(0xEF74C247);
}
然后从28开始再与0x66异或,其实这也没完后边还有,就比较乱了,所以改用od一步步跟,跟到差不多的时候可以看到flag,因为flare-on.com这个太过明显了,比较容易看到
such.5h311010101@flare-on.com
flag{such.5h311010101@flare-on.com}