欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]手查PE重定向

[原创]手查PE重定向

建议先看这篇文章
手查PE导出表:http://bbs.pediy.com/showthread.php?t=205989
工具:010editor  计算器...
既然是手查重定位 那么就要先找到重定位表
得到  地址029000 大小09F8

判断落在哪个区段
区段大小   地址
10000      1000
e8ca       011000
4248       20000
0a54       025000
11dc       026000
08c9       028000
0c56       029000              015200

                    029000-029000+015200=015200
计算及判定方法在“手查PE导出表”一文中 在此就不赘述了。
根据数据结构:


typedef struct _IMAGE_BASE_RELOCTION{

  DWORD VirtualAddress;    //需要重定位的位置

  DWORD SizeOfBlock;      //这个结构体的大小

  WORD TypeOffset[1];      //一个特殊数据存放相对于第一个元素描述的位置的偏移

}


CTRL+G  15200

得到 011000   0C    3FD0 
需要重定位的个数 n=(SizeOfBlock-8(结构体的大小))/2;
                     (0C+8)/2=2H
第三个成员高4位描述属性 低12位描述的才是一个偏移 
我们可以用计算器得到 高四位为0011 即0x0003  低12位*111111010000? 即 0xFD0
我们便可以得到需要重定位的虚拟地址RVA
    11000+fd0=11fd0;
按照上篇帖子所述方法 我们仍需要查落在哪个区段  
由之前查到区段可知
落在第二个区段 所以我们可以按照公式 :11fd0-11000+0400=13d0
ctrl +G     13D0

                          取出数据(无论如何都是4个字节) 得100209fc
我们再去扩展头(可选头)找到默认加载基址 

                   得到   10000000
根据公式   得到 100209fc-1000000=209FC   这个数据就是需要重定位的虚拟地址(VA)
很显然 落在第三个区段   
再计算 :      209FC-20000+ee00=F7FC
CTRL +G F7FC
得到内容 也就是 lordpe里面的数据解释  

然后对照LORDPE  就会发现 这个上面的所需数据 我们都查到了!!!!

好了   重定位大概就是这些  
至于自我重定位  有了这些思路那还难吗?
这篇文章是因论坛网友的需求  再加之我有空  就写出来吧   
还有 我为什么从来没被加过精华  或者优秀也是好的啊  (哭     
我哪里有欠缺  大家指出来 我好改正啊  
-----------------------------------
样本:
MFCLibrary1Dll.rar

上传的附件 1.png
2.png
3.png
4.png
5.png
6.png
7.png
MFCLibrary1Dll.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功