下面是一个c++和汇编混合编程的的代码,提示“Undefined label ‘SPMessageB
typedef void (WINAPI *SPMESSAGEBOXA) (HWND, LPCTSTR, LPCTSTR, UINT);
SPMESSAGEBOXA SPMessageBoxA;
void OtherMessageBox(HWND, LPCTSTR, LPCTSTR, UINT);
_TCHAR lpBuf[40];
_TCHAR lpBufA[40];
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int Icon = MB_ICONINFORMATION;
const PSTR szCaption = "This never break even break-point was set ! ";
const PSTR szText = lpBuf;
const PSTR szTargetAPI = "MessageBoxA";
HMODULE hUser32 = GetModuleHandle("user32");
SPMessageBoxA = (SPMESSAGEBOXA)GetProcAddress(hUser32, szTargetAPI);
wsprintf(lpBufA, "%s", "This can Break !");
sprintf(lpBuf, "Code byte was %8X", *(PULONG)SPMessageBoxA);
SPMessageBoxA(0, lpBuf,lpBufA, MB_ICONINFORMATION);
if (*(PUCHAR)SPMessageBoxA == 0xcc)
wsprintf(lpBuf, "%s", "Break point was set !");
else
wsprintf(lpBuf, "%s", "No Break point set !");
OtherMessageBox(0, szText, szCaption, Icon);
}
//---------------------------------------------------------------------------
void OtherMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType )
{
__asm
{
inc SPMessageBoxA
push dword ptr uType
push dword ptr lpCaption
push dword ptr lpText
push 0
call MsgJmpBox
jmp end
MsgJmpBox:
push ebp
jmp SPMessageBoxA
end:
}
}
搜索更多相关主题的帖子:
label SPMessageB Undefined 提示 代码