shellcode就是汇编的opcode,一般以子函数形式出现:

取得shellcode的方便方式是:

1.写一个函数如:

void __stdcall code(LONG &a,
LONG &b,
DWORD &c,
LONG &d,
DWORD &e)

取得它的汇编码:如:

 push    ebp
mov ebp,esp
sub esp,14h
push ebx
push esi
push edi
mov dword ptr [ebp-4],0FFFFFFFFh
mov dword ptr [ebp-0Ch],0
mov dword ptr [ebp-8],0
mov dword ptr [ebp-14h],0
mov dword ptr [ebp-10h],0
pushad
mov eax,22E4CCh
int 0FFh
mov dword ptr [ebp-4],eax
mov dword ptr [ebp-0Ch],ecx
mov dword ptr [ebp-14h],edx
mov dword ptr [ebp-8],esi
mov dword ptr [ebp-10h],edi
popad
mov eax,dword ptr [ebp+8]
mov ecx,dword ptr [ebp-4]
mov dword ptr [eax],ecx
mov edx,dword ptr [ebp+0Ch]
mov eax,dword ptr [ebp-0Ch]
mov dword ptr [edx],eax
mov ecx,dword ptr [ebp+10h]
mov edx,dword ptr [ebp-14h]
mov dword ptr [ecx],edx
mov eax,dword ptr [ebp+14h]
mov ecx,dword ptr [ebp-8]
mov dword ptr [eax],ecx
mov edx,dword ptr [ebp+18h]
mov eax,dword ptr [ebp-10h]
mov dword ptr [edx],eax
pop edi
pop esi
pop ebx
mov esp,ebp
pop ebp
ret 14h

转换成机器码:

unsigned char *asm_code()
{
__asm
{
lea eax,__code
jmp __ret
} // shellcode
__asm
{
__code://要加的汇编
//TODO
}
__asm nop//标志位,一般是int 3,即0xcc
__asm {__ret:}
}
int main()
{
unsigned char temp;
int i=1;
unsigned char* asm_p = asm_code();
FILE *fd = fopen("code.txt","w");
fprintf(fd,"unsigned char shellcode[] = \"");
while((temp = *asm_p) != 0x90)//标志位,一般是int 3,即0xcc
{
fprintf(fd,"\\x%.2x",temp);
asm_p ++;
if(i % 8 == 0) fprintf(fd,"\"\n\"");
i ++;
}
fprintf(fd,"\";");
fclose(fd);

运行得到shellcode[]数组在code.txt中,取出

调用方式一般采用:

#define  QSHELLCODE {0x55, 0x8b, 0xec, 0xcd, 0xff, 0x5d, 0xc3}
#define SHELLCODE_SIZE 0x7
	PVOID  m_pShellCode = VirtualAlloc(NULL, SHELLCODE_SIZE, MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
if (m_pShellCode)
{
byte ptr_shellcode[] = QSHELLCODE;
memcpy(m_pShellCode, ptr_shellcode,SHELLCODE_SIZE);
}

最后调用有两种方式,一种是:

pfn_Q pfn = (pfn_Q)m_ShellCode;
pfn(填参数);//函数直接调

另一种是汇编:

	lea ecx, pfn
mov ecx, [ecx]
call ecx

当然,有参数就先push参数

shellcode流程的更多相关文章

  1. Shellcode编程小技巧

    工作需要,需要注入其他程序监控一些东西,检测到的数据通过WM_COPY 消息发送给显示窗体.(大体是这样的还没定稿) ##1 选择一个框架 ## tombkeeper/Shellcode_Templa ...

  2. 《ODAY安全:软件漏洞分析技术》学习心得-----shellcode的一点小小的思考

    I will Make Impossible To I'm possible -----------LittleHann 看了2个多星期.终于把0DAY这本书给看完了,自己动手将书上的实验一个一个实现 ...

  3. D3D游戏降帧的动态创建D3D设备以及ShellCode HOOK玩法

    欢迎转载,转载请注明出处:http://blog.csdn.net/gnorth/article/details/9327971 说白了,也就是HOOK掉Present,这种代码,其实百度上某些地方有 ...

  4. 三、后门的编写和 ShellCode 的提取

    第三章.后门的编写和 ShellCode 的提取 (一)IP 和 Socket 编程初步 NOTES: 1.Windows 下网络通信编程的几种方式 第一种是基于 NetBIOS 的网络编程,这种方法 ...

  5. 二、Windows 下 ShellCode 编写初步

    第二章.Windows 下 ShellCode 编写初步 (一)shellcode 定义:最先的 Shell 指的是人机交互界面,ShellCode 是一组能完成我们想要的功能的机器代码,通常以十六进 ...

  6. 使用MSF生成shellcode

    使用MSF生成shellcode payload和shellcode的区别 Payload是是包含在你用于一次漏洞利用(exploit)中的ShellCode中的主要功能代码.因为Payload是包含 ...

  7. Linux pwn入门教程(2)——shellcode的使用,原理与变形

    作者:Tangerine@SAINTSEC 0×00 shellcode的使用 在上一篇文章中我们学习了怎么使用栈溢出劫持程序的执行流程.为了减少难度,演示和作业题程序里都带有很明显的后门.然而在现实 ...

  8. 3.2 定位shellcode

    前言 此帖为 0day_2th 一书第三章实践不完全记录. 流程记录 searchAddr.c 文件: #include <windows.h> #include <stdio.h& ...

  9. 栈溢出原理与 shellcode 开发

     ESP:该指针永远指向系统栈最上面一个栈帧的栈顶  EBP:该指针永远指向系统栈最上面一个栈帧的底部 01  修改函数返回地址 #include<stdio.h> #include< ...

随机推荐

  1. 2009年到2013年甲子园ED

    2009年 2010年  最喜欢的一个!看过N遍 2011年 也不错! 2012年  超级好听啊~^_^比10年的还好,看过N+1遍……o(╯□╰)o 2013年春季甲子园 2013年夏季 印象最深的 ...

  2. FlashFXP 破解代码

    FlashFXP RealKEY: ------------- 将以下内容COPY到软件里面的注册框即可 ------------- FLASHFXPwQAOlhkgwQAAAAC6W5MNJwTns ...

  3. Python学习笔记——Day4

    字符串操作 string典型的内置方法: count() center() startswith() find() format() lower() upper() strip() replace() ...

  4. javascript_获取浏览器属性

    navigator.appName:浏览器名称: navigator.appVersion:浏览器版本: navigator.language:浏览器设置的语言: navigator.platform ...

  5. libcurl发起post请求时间延迟问题。except为空即可

    最近在做团购酒店APP分享到qzone功能,使用libcurl访问qzone的分享cgi接口,酒店分享信息以POST方式传输,在测试的时候发现分享接口平均有2s的延迟,这延迟也太大了吧,于是乎问了空间 ...

  6. 国内首家VR虚拟现实主题公园即将在北京推出

    近期,美国“The VOID”.澳洲“Zero Latency”两大虚拟现实主题乐园让许多爱好者兴奋至极,门票据说都已经预约到明年2月!在如此巨大的商机面前,谁将抢到国内VR虚拟现实主题公园第一块蛋糕 ...

  7. js反射机制

    本文转载自:http://blog.csdn.net/liuzizi888/article/details/6632434 什么是反射机制反射机制指的是程序在运行时能够获取自身的信息.例如一个对象能够 ...

  8. SQL 养成一个好习惯是一笔财富

    来源:MR_ke 链接:http://www.cnblogs.com/MR_ke/archive/2011/05/29/2062085.html 我们做软件开发的,大部分人都离不开跟数据库打交道,特别 ...

  9. SQL Server 2008 数据库通过镜像同步备份(数据库热备)

    数据库镜像运行模式: 异步数据库镜像模式(异步,高性能模式) 同步数据库镜像模式(同步,高安全模式) 参考资料: http://technet.microsoft.com/zh-cn/library/ ...

  10. ASP.NET MVC+EF5 开发常用代码

      Asp.Net Mvc,EF 技术常用点总结 1.Asp.Net MVC a)获得当前控制器名和当前操作的名称(action) 1.Action 中 RouteData.Values[" ...