首页
社区
课程
招聘
[求助]
发表于: 2012-6-17 09:19 3574

[求助]

2012-6-17 09:19
3574
#include <stdio.h>
#include <windows.h>
typedef void (*MYFUNC)(HWND,LPTSTR,LPTSTR,int);
int main(int argc, char* argv[])
{
HMODULE hLib = LoadLibrary( "user32.dll" );

// MYFUNC pMsgBoxA = NULL;
// pMsgBoxA = (MYFUNC)GetProcAddress( hLib , "MessageBoxA" );
// printf("MessageBoxA  addr = %x" , pMsgBoxA );

// MessageBox( NULL , "My msgbox" , "bufflo" , MB_OKCANCEL );

  ///*
__asm{
  push ebp;
  mov ebp , esp;
  sub esp , 80h;

  mov byte ptr[ebp-12h], 6dh; //m
  mov byte ptr[ebp-11h], 79h; //y
  mov byte ptr[ebp-10h], 20h; //空格
  mov byte ptr[ebp-0fh], 6dh; //m
  mov byte ptr[ebp-0eh], 73h; //s
  mov byte ptr[ebp-0dh], 67h; //g
  mov byte ptr[ebp-0ch], 62h; //b
  mov byte ptr[ebp-0bh], 6fh; //o
  mov byte ptr[ebp-0ah], 78h; //x
  mov byte ptr[ebp-09h], 0h;

  lea esi , [ebp-12h];

  mov byte ptr[ebp-07h], 62h; //b
  mov byte ptr[ebp-06h], 75h; //u
  mov byte ptr[ebp-05h], 66h; //f
  mov byte ptr[ebp-04h], 66h; //f
  mov byte ptr[ebp-03h], 6ch; //l
  mov byte ptr[ebp-02h], 6fh; //o
  mov byte ptr[ebp-01h], 0h;

  lea edi , [ebp-07h];

  push 1;
  push esi;
  push edi;
  push 0;
  mov eax,77d507eah;
  call eax;
}//*/
return 0;
}

请问:这个用汇编执行messagebox API的代码,为什么运行后会这样,报错误呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
  • 1.JPG (160.34kb,3次下载)
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
__asm{
  push ebp;
  mov ebp , esp;
  sub esp , 80h;
你上面有着些asm代码,下面却没有相应的代码去平衡栈,所以你消息框出来了,然后结束的时候出错了。
2012-6-17 09:24
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
帮我改改如何解决?
2012-6-17 10:21
0
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
4
#include <iostream>
#include <Windows.h>
;using namespace std;

int main(int argc,char* argv[])
{
        ULONG FunAddr=(ULONG)::GetProcAddress(::LoadLibrary(L"user32.dll"),"MessageBoxA");
        char* ch_text1="Hello Word!";
        char* ch_text2="提示";
        __asm
        {
                push ebp
                mov ebp,esp
                sub esp,0x8
                lea eax,ch_text2
                mov dword ptr [ebp-8],eax
                lea ebx,ch_text1
                mov dword ptr [ebp-4],ebx
                mov esp,ebp
                pop ebp
                push 0
                push dword ptr [ebp-8]
                push dword ptr [ebp-4]
                push 0
                call dword ptr FunAddr
        }
        return 0;
}
//
2012-6-17 14:10
0
雪    币: 26
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
哈哈,谢谢了,
2012-6-17 17:06
0
游客
登录 | 注册 方可回帖
返回
//