//我写了些代码,打算写SHELLCODE,可惜技术不到家,
//这段代码,有很多疑问,为什么Hello world会显示两次?
//高手可否指点一下!!感激!同时也希望其他初学者也可以学到点东西.
// testjmp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
void test()
{
__asm
{
pop edi
pop esi
pop ebx
pop ebp
jmp DWORD ptr[esp]
}
}
int main(int argc, char* argv[])
{
test();
printf("Hello World!\n");
return 0;
}
/////////////////////////
// 输出
/*
Hello World!
Hello World!
Press any key to continue
*/
/* 反汇编内容
00401000 $ 55 push ebp
00401001 . 8BEC mov ebp, esp
00401003 . 53 push ebx
00401004 . 56 push esi
00401005 . 57 push edi
00401006 . 8BE5 mov esp, ebp
00401008 . 5D pop ebp
00401009 . FF2424 jmp dword ptr [esp]
0040100C . 5F pop edi
0040100D . 5E pop esi
0040100E . 5B pop ebx
0040100F . 5D pop ebp
00401010 . C3 retn
00401020 /$ E8 DBFFFFFF call 00401000
00401025 |. 68 30604000 push 00406030 ; ASCII "Hello World!",LF
0040102A |. E8 11000000 call 00401040
0040102F |. 83C4 04 add esp, 4
00401032 |. 33C0 xor eax, eax
00401034 \. C3 retn
*/
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课