通用ShellCode深入剖析

前言:

在网上关于ShellCode编写技术的文章已经非常之多,什么理由让我再写这种 技术文章呢?本文是我上一篇溢出技术文章<Windows 2000缓冲区溢出技术原理>的姊妹 篇,同样的在网上我们经常可以看到一些关于ShelCode编写技术的文章,似乎没有为初学者准 备的,在这里我将站在初学者的角度对通用ShellCode进行比较详细的分析,有了上一篇的溢出 理论和本篇的通用ShellCode理论,基本上我们就可以根据一些公布的Window溢出漏洞或是自 己对一些软件系统进行反汇编分析出的溢出漏洞试着编写一些溢出攻击测试程序.

文 章首先简单分析了PE文件格式及PE引出表,并给出了一个例程,演示了如何根据PE相关技术查 找引出函数及其地址,随后分析了一种比较通用的获得Kernel32基址的方法,最后结合理论进 行简单的应用,给出了一个通用ShellCode.

本文同样结合我学习时的理解以比较容易 理解的方式进行描述,但由于ShellCode的复杂性,文章主要使用C和Asm来讲解,作者假设你已 具有一定的C/Asm混合编程基础以及上一篇的溢出理论基础,希望本文能让和我一样初学溢出 技术的朋友有所提高.

[目录]

1,PE文件结构的简介,及PE引出表的分 析.

1.1 PE文件简介

1.2 引出表分析

1.3 使用内联汇编写一个通用的 根据DLL基址获得引出函数地址的实用函数

GetFunctionByName

2,通用 Kernel32.DLL地址的获得方法.

2.1 结构化异常处理和TEB简介

2.2 使用内联 汇编写一个通用的获得Kernel32.DLL函数基址的实用函数

GetKernel32

3,综合 运用(一个简单的通用ShellCode)

3.1 综合前面所讲解的技术编写一个添加帐号及开 启Telnet的简单ShellCode:

根据第2节所述技术使用我们自己实现的 GetFunctionByName获得LoadLibraryA和GetProcAddress函数地址,再使用这两个函数引入所 有我们需要的函数实现期望的功能.

4,参考资料.

5,关键字.

-------- --------------------------------------------------------------

时间: 2024-09-05 06:15:09

通用ShellCode深入剖析的相关文章

学习ShellCode(一)

前几天看了看x的shellcode,有很多东西部是很懂,今天找了找在安全焦点http://www.xfocus.net/找到一个高人写的,看了看思路,写得很不错,所以贴出来大家看看,以方便以后学习用阿! ? 这个是通用的shellcode,自己在vc++下编译一下! /*??????????? 使用C语言编写通用shellcode的程序出处:internet修改:Hume/冷雨飘心测试:Win2K SP4 Local */#include #include #include #define? D

c语言-用C语言编写能进行四则运算的程序

问题描述 用C语言编写能进行四则运算的程序 我想用C语言编一个能进行简单的四则运算的程序,应该怎么写,请详细解释一下输入和计算部分 解决方案 实现四则运算是比较简单的,你可以使用两个栈,一个栈用来存贮操作的数字(0~n),一个栈用来存储操作符(+-等).你先把四则运算表达式存为一个字符串,然后遍历各个字符,如果是数字,那就存起来,如果是操作符,那就与前一个操作符比较,看看优先级是不是比前一个大,如果是,那就存起来,如果不是,那就把数字栈里的前两个数按照前一个操作符进行运算.结果用一个变量保存起来

Digester:一个通用xml引擎的设计剖析

   一:Digester介绍    Digester是Jakarta 子项目Commons下的一个模块,支持基于规则的对任意XML文档的处理.它最初是Structs项目的 一部分,后因其通用性而划归Commons.    本文不是描述Digester如何使用,而是深入分析Digester的源码,对其设计进行分析,从而从中学到设计方法和一些设计 理念,正所谓"授人鱼,不如授人以渔".      二:不好的设计   Digester要解决的问题看起来很简单:根据xml文件定义,来生成指定

HTML彻底剖析(4)排版标记

■ 排版标记 <!--注解-->:<P>:<BR>:<HR>:<CENTER>:<PRE>:<DIV>:<NOBR>:<WBR>: 欲明白本篇[HTML彻底剖析]之标记分类,请看 [标记一览]. 也请先明白围堵标记与空标记的分别,请看 [HTML概念].   ■ <!--注解-->: ▲Top 用法: 用来插入一些在浏览器中不显示的注释和解释性语言开始/结束标识: 必须/必须属性: 没有

了解 XML实现通用的数据访问

xml|访问|数据   了解可扩展标记语言 (XML) 如何帮助我们实现通用的数据访问.XML 是一种基于 Unicode 的纯文本元语言,即一种用于定义标记语言的语言.它不依赖于任何编程语言.操作系统或软件供应商.XML 可以提供对各种数据处理.构建.转换和查询技术的访问.(本文包含一些指向英文站点的链接.)  简介     最初设想的可扩展标记语言 (XML) 用于为 Web 定义新文档的格式.XML 由标准通用标记语言 (SGML) 衍生而来,可以认为它是一种元语言,即一种定义标记语言的语

HTML语言剖析(四)排版标记

HTML语言剖析 排版标记 <!--注解--> : <P> : <BR> : <HR> : <CENTER> : <PRE> : <DIV> : <NOBR> : <WBR> :  ■<!--注解-->:                                                                                             

剖析 .Net 下的数据访问层技术(一)

访问|数据 l 引言 自从 .NET 真正走入开发人员那天起,"效率"两个字就一直成为众多程序员津津乐道的话题.无论是从开发模式(Cross Language).系统框架(.NET Framework),还是各种使用方便的工具(VS.NET),无一不体现出了它的胜人一筹. 同时,在另一方面,.NET 是否可以真正胜任企业级应用(Enterprise Application)开发的重任,却依然争论不断,褒贬不一. 通常来说,对于一个企业级应用,需要考虑的方面很多,如安全.性能.伸缩性.易

黑客的关键工具:Shellcode简介

对于初期接触网络安全的人来说,Shellcode是很神秘的东西,对于网络攻击过程中的嗅探信息.漏洞剖析都是可以理解的,但真正利用漏洞入侵时,通过把一段二进制码送入后并执行,就可以获得目标机器的控制权,之后的事情是属于爱好者学习技术,还是黑客的行为,就看攻击者的一念之差了.Shellcode就好象神秘的武器,安全防护变得如此不堪一击.Shellcode究竟是什么样的程序?是什么特殊代码?如何才能学会编写?我下面收集了几类常见的Shellcode,主要是学习使用.它其实也是一般的软件程序,主要是因为

[你必须知道的.NET] 第七回:品味类型---从通用类型系统开始

本文将介绍以下内容: .NET 基础架构概念 类型基础 通用类型系统 CLI.CTS.CLS的关系简述 1.引言 本文不是连环画,之所以在开篇以图形的形式来展示本文主题,其实就是想更加特别的强调这几个概念的重要性和关注度,同时希望从剖析其关系和联系的角度来讲述.NET Framework背后的故事.因为,在作者看来想要深入的了解.NET,必须首先从了解类型开始,因为CLR技术就是基于类型而展开的.而了解类型则有必要把焦点放在.NET类型体系的公共基础架构上,这就是:通用类型系统(Common T