当前位置:   article > 正文

Messagebox--shellcode(三)_shellcode messagebox

shellcode messagebox
首先,希望路过的大佬可以拯救一下在门都不知道在哪的小白吧!感激不尽啊!!!

这段messagebox代码暂告一段落吧(啊啊啊啊,,我咋就这么笨呢),这一段代码,思来想去还是决定有太多的问题值得我去思考和探索了,这篇文章就当是对自己出现的问题的一个小记录吧,真的是太!!!
代码很简单,就是一个汇编调用messagebox的代码,然后汇编语言中执行没有问题,但是变成shellcode却出现了意想不到的问题。

#include "stdafx.h"
#include "stdio.h"
#include "windows.h"

char shellcode[]="\x50\x66\x81\xec\x54\x04\x33\xdb\x53\x68\x64\x63\x62\x61\x68\x68\x68\x67\x66\x65\x8b\xc4\x53\x50\x50\x53\xa1\xac\xa2\x42\x00\xff\xd0\x58\x83\xc4\x0c";
int main(int argc, char* argv[])
{
	//把MessageBox所在的dll加载到程序空间
	printf("begin\n");
    HINSTANCE libHandle;
	char *dll="user32.dll";
    libHandle=LoadLibrary(dll);
 /*
	__asm
   {
	push eax
	  sub esp,0x454
	  xor ebx,ebx
	  push ebx
	  push 0x61626364
	  push 0x65666768
	  mov  eax,esp
	  push ebx
	  push eax
	  push eax
	  push ebx
 //	call dword ptr[MessageBox]  
	  mov  eax, dword ptr[MessageBox]
	  call eax
	  pop eax
	  add esp, 12	;这个是后期加上去用于平衡堆栈的
   }
 
*/
	__asm
	{
	  lea eax,shellcode
	  push eax
	  ret

	}

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

问题1、shellcode是怎么执行的?

产生这个问题的代码:
在这里插入图片描述
我原以为shellcode是在push时开始执行的,可是当我单步调试分析时,发现shellcode其实是在执行完 ret 后才开始执行的,??这个就很迷了。
以下是反汇编证据:
在这里插入图片描述

问题二:shellcode的地址

最开始的shellcode是分配在哪里的呢???为什么他去了一个稀奇古怪的天国???和代码段相差甚远!!啊啊啊,孩子,回家不好吗??
在这里插入图片描述

问题三:与邻居代码争吵??

最开始我以为是自己写的汇编代码出错,但是后期发现,其实竟然是shellcode的邻居(即shellcode的下面一段代码),
等会,现在想想,他是不是因为回不来,停留在外面而报错呢??
刚刚调试,这个问题以外的没了,,,算了我还是把“邻居代码”贴出来吧。
在这里插入图片描述

问题四:Messagebox call时出现了错误。

如图,在call调用messagebox时发生了错误。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/705360
推荐阅读
  

闽ICP备14008679号