brightsm 发表于 2016-2-23 11:16:50

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整型呀?

wgz001 发表于 2016-2-23 11:31:58

股票你也敢玩外挂    你赢了

brightsm 发表于 2016-2-23 11:41:51

不是他玩我,是我玩他。分析他的代码,我自己开发。

飘云 发表于 2016-2-23 11:53:54

x86 下一切皆 DWORD (int)

ZMLoveLH 发表于 2016-2-24 22:17:01

都是汇编语言,看不懂啊

jixun.moe 发表于 2016-2-26 02:04:54

DWORD/int/char* 都是 4 字节长度。

木偶Ghost 发表于 2016-2-26 20:45:15

对着呢,X86

飘飘塔 发表于 2017-12-14 13:17:48

版主的回答是正确的.

aoaili 发表于 2019-6-19 12:47:14


版主的回答是正确的.
页: [1]
查看完整版本: IDA反编译问题