测试一下:
[C++] 纯文本查看 复制代码 #include <windows.h>
#include "resource.h"
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
// 函数声明
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DialogProc, NULL);
return 0;
}
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_BTN_CRACK:
break;
}
return TRUE;
case WM_CLOSE:
EndDialog(hwndDlg, 0);
return TRUE;
}
return FALSE;
}
[Asm] 纯文本查看 复制代码 ; include user32.inc
; include kernel32.inc
includelib user32.lib
includelib kernel32.lib
extern MessageBoxA:proc ; 如果包含了user32.inc头文件,则不需要extern引入该函数
extern ExitProcess:proc ; 如果包含了kernel32.inc头文件,则不需要extern引入该函数
.data
szText db 'Hello World!', 0
szCaption db 'Title', 0
.code
WinMain proc
sub rsp, 28h
xor r9d, r9d
mov r8, offset szCaption
mov rdx, offset szText
xor rcx, rcx
call MessageBoxA
xor ecx, ecx
call ExitProcess
add rsp, 28h ; 实际上执行完ExitProcess函数以后,这里不会得到执行
ret
WinMain endp
end
; 也可以使用以下命令编译
; ml64 /c HelloWorld.asm
; link /subsystem:windows /entry:WinMain HelloWorld.obj
|