IDA反编译问题
跟踪一款股票外挂:.text:100066F0 ; char __stdcall Tdx_Init(int TradeServerIp, __int16 TradeServerPort, int TradeClientVersion, char *ErrInfo)
.text:100066F0 public Tdx_Init
.text:100066F0 Tdx_Init proc near ; DATA XREF: .rdata:off_1000FE08o
.text:100066F0
.text:100066F0 var_20 = byte ptr -20h
.text:100066F0 var_18 = byte ptr -18h
.text:100066F0 var_14 = byte ptr -14h
.text:100066F0 var_E = byte ptr -0Eh
.text:100066F0 var_D = byte ptr -0Dh
.text:100066F0 var_C = dword ptr -0Ch
.text:100066F0 var_4 = dword ptr -4
.text:100066F0 TradeServerIp = dword ptr8
.text:100066F0 TradeServerPort = dword ptr0Ch
.text:100066F0 TradeClientVersion= dword ptr10h
.text:100066F0 ErrInfo = dword ptr14h
.text:100066F0
.text:100066F0 55 push ebp
.text:100066F1 8B EC mov ebp, esp
.text:100066F3 6A FF push 0FFFFFFFFh
.text:100066F5 68 5A B3 00 10 push offset sub_1000B35A
.text:100066FA 64 A1 00 00 00 00 mov eax, large fs:0
.text:10006700 50 push eax
.text:10006701 83 EC 14 sub esp, 14h
.text:10006704 A1 9C 00 01 10 mov eax, ___security_cookie
.text:10006709 33 C5 xor eax, ebp
.text:1000670B 50 push eax
.text:1000670C 8D 45 F4 lea eax,
.text:1000670F 64 A3 00 00 00 00 mov large fs:0, eax
反编译效果:
char __stdcall Tdx_Init(int TradeServerIp, __int16 TradeServerPort, int TradeClientVersion, char *ErrInfo)
{
int v4; // ST10_4@1
const char *v5; // ST0C_4@1
int v6; // eax@1
char v8; // @1
char v9; // @1
char v10; // @1
char v11; // @1
char v12; // @1
int v13; // @1
sub_10001000();
v4 = sub_10009F73();
AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(&v8);
v13 = 0;
sub_10001060(&unk_100108B4);
LOBYTE(v13) = 1;
((void (__thiscall *)(char *))ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>)(&v10);
LOBYTE(v13) = 2;
v12 = sub_10005690(TradeServerIp, TradeServerPort, TradeClientVersion, &v10);
v5 = (const char *)ATL::CSimpleStringT<char_1>::operator char_const__(&v10);
v6 = ATL::CSimpleStringT<char_1>::GetLength(&v10);
strcpy_s(ErrInfo, v6 + 1, v5);
v11 = v12;
LOBYTE(v13) = 1;
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::_CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>(&v10);
LOBYTE(v13) = 0;
sub_10001090(&v9);
v13 = -1;
AFX_MAINTAIN_STATE2::_AFX_MAINTAIN_STATE2(v4);
return v11;
}
这儿char __stdcall Tdx_Init(int TradeServerIp, __int16 TradeServerPort, int TradeClientVersion, char *ErrInfo)
参数1,3明明都是char*,为啥反编译出来参数类型是int整型呀?
股票你也敢玩外挂 你赢了 不是他玩我,是我玩他。分析他的代码,我自己开发。 x86 下一切皆 DWORD (int) 都是汇编语言,看不懂啊 DWORD/int/char* 都是 4 字节长度。 对着呢,X86 版主的回答是正确的.
版主的回答是正确的.
页:
[1]