能力值:
( LV9,RANK:210 )
|
-
-
2 楼
文中有个错误的地方,MessageBoxA调用为call [401050]而不是原文中的call 401050
|
能力值:
( LV9,RANK:490 )
|
-
-
3 楼
不错的东东~~
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
pe确实很重要
支持一下 & 学习一下
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
PE得要好好的学习哦~
|
能力值:
( LV9,RANK:850 )
|
-
-
6 楼
我来支持fonge哥,顺便温习pe!!!!
支持支持,强烈支持`
|
能力值:
( LV9,RANK:850 )
|
-
-
7 楼
我也来支持你,fonge,顺便复习
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不错,不过文中的RVA入口不一样,还有在构建块表时没有说,呵呵,
有点晕,希望能更详细些,
|
能力值:
( LV9,RANK:210 )
|
-
-
9 楼
这也能骗精啊!汗一个先!
昨天鼓搞了一天,整了两篇,一起发上来
PE自定义之手工分块:
目标文件为第一阶段手构建的EXE文件。
分为三个块,待解决的问题如下: 一.块表: 1.在块表中新增2个块 2.制定相应的块属性
二.PE文件头: 1.块表数目上的变化了 2.修改入口点 3.重新制定代码段物理大小 4.重新制定数据段物理大小 5.内存中映象总大小变了 6.输入表指向位置不一样了
三.数据重建: 1.单纯数据 2.输入表 3.可执行代码调用
手工压缩PE的实现:
PE物理体积的减小:
这里说的物理体积减小,是在不做可执行代码调用重定位的情况下实现物理体积减小!
经过前两个阶段,已经对PE文件及其修改了解更多了 在前面的阶段中,PE修改突显了一个问题,那就是输入表移位后必然可执行代码中调用地址需要做出相应的变化,而我们知道在真正实用的可执行文件中,有成百上千到万的地方调用引入数据,这样的话,改起来非常麻烦。而我们设法让PE文件物理大小更小,必然去掉大量的非用字节,这就会导致输入表移位和一些指定数据移位,而前提必将是在输入表移位和数据移的情况下不改到可执行代码。 这一阶段将是不改动可执行代码实现数据物理大小的修改,以第二阶段的三区块.exe为例!
原理:如图,绿色部分为对齐用00填充位,左一图中占用位使用了大量磁盘空间,左三图中去掉了大部分占用位空间,同时,实现内存中数据定位信息相同,无需更多精力花在重定位上! **** ***** ** 实现流程: 1.各区段的数据集合到同一个区段中 2.修改这个区段内存中大小为原内存中映象大小 3.增加一段可执行代码实现数数据归位 原则上讲,可以修改磁盘对齐值来实现PE文件的有效性,这关系到可执行代码中调用重定位的问题。我们这里用合并区块和追加一定代码的方式实现!
|
能力值:
( LV9,RANK:850 )
|
-
-
10 楼
我坐楼上的沙发,死了都要学习
|
能力值:
( LV9,RANK:210 )
|
-
-
11 楼
8楼你别光看字不看图噻
|
能力值:
( LV15,RANK:1473 )
|
-
-
12 楼
支持fonge!研究的这么深,呵呵
下回来学习先。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
谢谢fonge,谢谢
|
|
|