#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ;
return 0 ;
}
cl 1.c /link user32.lib
cl 1.cpp /link user32.lib
都可以,有个地方不明白
查了usre32.dll导出表,其中的名字都是没有改编过的
这样的话,c++方式编译成的obj文件链接时怎么能在user32.lib中找得到对应的函数名?
还有一个问题,有关winmain参数的
.text:004010C2 call __wincmdln
.text:004010C7 mov [ebp+var_64], eax
.text:004010CA test byte ptr [ebp+StartupInfo.dwFlags], 1
.text:004010CE jz short loc_4010D6
.text:004010D0 movzx eax, [ebp+StartupInfo.wShowWindow]
.text:004010D4 jmp short loc_4010D9
.text:004010D6 ; ----------------------------------------------------------------------------
.text:004010D6
.text:004010D6 loc_4010D6: ; CODE XREF: start+B1j
.text:004010D6 push 0Ah
.text:004010D8 pop eax
.text:004010D9
.text:004010D9 loc_4010D9: ; CODE XREF: start+B7j
.text:004010D9 push eax
.text:004010DA push [ebp+var_64]
.text:004010DD push esi
.text:004010DE push esi ; lpModuleName
.text:004010DF call ds:GetModuleHandleA
.text:004010E5 push eax
.text:004010E6 call _WinMain@16 ; WinMain(x,x,x,x) //前面怎么push了五个参数???
.text:004010EB mov [ebp+var_60], eax
.text:004010EE push eax ; int
.text:004010EF call _exit
[课程]Android-CTF解题方法汇总!