浅谈脱壳中的附加数据问题

浅谈脱壳中的附加数据问题

ID:13219118

大小:46.50 KB

页数:7页

时间:2018-07-21

浅谈脱壳中的附加数据问题_第1页
浅谈脱壳中的附加数据问题_第2页
浅谈脱壳中的附加数据问题_第3页
浅谈脱壳中的附加数据问题_第4页
浅谈脱壳中的附加数据问题_第5页
资源描述:

《浅谈脱壳中的附加数据问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、浅谈脱壳中的附加数据问题(overlay)Author:LenusFrom: www.popbase.netE-mail:Lenus_M@163.com--------------------------------------------------1.前言   最近,在论坛上看到很多人在弄附加数据overlay的问题,加上上次答应了各位兄弟所以觉得写一些着方面的废话。如果下面的内容对你有帮助那是最好。   这篇文章我们将解决以下问题:1.什么是overlay,怎么找到overlay?2.为什么有些壳虽然有overlay但是却不用特别处理?3.为什

2、么有些壳只用粘贴overlay数据就ok了,而有些壳却要定位指针?4.如何修复文件指针?--------------------------------------------------  2.正文一.什么是附加数据(overlay)   1.实际当中的overlay   其实,overlay虽然大家在脱壳当中觉得很陌生,但是他离我们并不遥远。在我们平时使用的软件当中,有一些软件要处理一些数据流文件,比如winamp。当我们下载了mp3文件(数据文件),没有播放器是不可能播放的,与此相关的还有很多,比如txt文件和notepad的关系也差不多。而这

3、些数据文件被单独的保存在硬盘上,当我们使用notepad的打开功能的时候,就可以去读取数据文件里面的东西了。   overlay又是什么意思呢?他其实真正的意思就是取消打开功能,将这些需要读取的数据放到pe文件的后面,让程序自动的运行打开的功能。这样的功能就变成了一个notepad的程序对应只能打开一个文件。   最典型的就是一些软件可以把一些数据流文件生成exe文件,比如一些mp3生成器,flash生成器,以及我们用来做动画的S-demo。他们的作用就是将数据对pe进行捆绑。(这样做的结果也就是为什么我们对这些文件用UPX等pe压缩工具却不能压缩他

4、的原因,这是后话了)      2.技术上的overlay   在我们对pe文件的overlay进行分析之前,我们要普及一下文件映射的知识。   在pe里面,有所谓的文件偏移RA,文件偏移大小RS和与其对应的虚拟地址偏移VA,虚拟地址偏移大小VS。   我们要深刻的理解以上的概念不是我这篇文章能说清楚的,但又是搞overlay必须得弄清楚的,于是我简单的说明一下。   在我们的磁盘上的pe文件里面,排列着的数据在运行的时候将被影射到内存空间。他们将被怎么影射呢?举个例子:例1:   一个pe文件中只有两个区段(pe head不算)   第一个区段是.

5、text VA=401000 VS=1000  RA=200 RS=100   第二个区段是.data VA=402000 VS=1000  RA=300 RS=100   假设我们打开winhex看到在文件偏移300处的情况是这样的:   RA=2FF 处的数据是12  RA=300处的数据是34   好了,现在当pe文件装到内存中,那么会出现什么结果呢。1.文件偏移中的200开始的100个字节将被影射到内存的401000开始的100个字节,后面的F000个字节将用0填充。2.文件偏移中的300开始的100个字节将被影射到内存的402000开始的1

6、00个字节,后面的F000个字节将用0填充。也就是说,在磁盘是上相邻的两个数据12和34,在内存空间中将分开得老远,12在40102FF处,而34却在402000处。当然这只是我自己随便举的一个极端的例子,实际上由于文件的对齐机制在磁盘上每个段的结束都是填充了大量的0为什么要讲这些呢?因为区段是一般将会被映射到内存的,如果上面的例子中。将.data区段去掉。那么在磁盘上就将会留下从RA=300到RA=400其大小为100的数据,不会被影射到内存中。而这部分数据就将被认为是附加数据-overlay。     3.做个实验   1.用lordPE的pe 

7、editor打开一个notepad   2.打开他的senctions看看   3.把他的最后一个区段的文件大小RS修改一下(改成F00吧,少影射100的文件)如图此主题相关图片如下: 1.要回答这个问题首先就会关系到两个函数CreateFileA和SetFilePointer。对于CreateFileA他是打开文件的函数,当你下断CreateFileA你会发现程序断下的时候,他的第一个参数就是这个pe文件在磁盘上的完全路径,表示他正在对文件打开,将要对他进行文件读写操作。这个函数我就不多说了。下面详细说说SetFilePointer   DWORD

8、 SetFilePointer(                         HANDLE hFile,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。