挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
游戏交易就上寄售网-专注稳定-诚信赢天下玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击
→入驻S9企业发卡网各种全黑号辅助群:475351077 ██【我要租此广告位】██.
.. .
查看: 2336|回复: 0
打印 上一主题 下一主题

[PEtools] 关于脱壳后重定位修复 自己写了个半成品工具

[复制链接]
6高级会员
653/1100

653

积分

226

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
427
海币
10722
交易币
0
跳转到指定楼层
楼主
发表于 2016-7-5 23:07:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


关于脱壳后重定位修复 自己写了个半成品工具
xp下不需要重定位,但是Vista之后加入了aslr保护,加大了黑客预测堆栈位置的难度,使得以前exe程序一直不重视的重定位,现在也需要修复。
虽然可以关闭重定位之后再脱壳就没有下面的一些问题了,但一个W美主义心里还是很不爽的。

程序原理:两次不同基址情况下的dump文件,通过对比确定需要重定位的数据,然后添加重定位区块,修复PE文件重定位区块指向,最后将重定位的数据写入重定位区块。


使用的程序为HImiy第一课作业:
脱壳后区段如下:

重定位数据如下:

修复后信息如下:



发现修复后的重定位信息多了很多,并且程序也不能运行


确认重定位信息的思路是:直接寻址的数据都需要重定位,然后采用收集的重定位汇编语句+反汇编引擎双向确认

需要重定位的汇编语句如下,可能不全:


  1. [/align]
  2. [align=left]BYTE actionCode[][2] = {
  3.     /*------------EAX------------------------------*/
  4.     { 0x2B, 0x05 },//sub eax,dword ptr ds:[0x3107B0]
  5.     { 0x29, 0x05 },//sub dword ptr ds:[0x3107B0],eax
  6.     { 0x2A, 0x05 },//sub al,byte ptr ds:[0x3107B0]
  7.     { 0x28, 0x05 },//sub byte ptr ds:[0x3107B0],al
  8.     { 0x03, 0x05 },//add eax,dword ptr ds:[0x3107B0]
  9.     { 0x01, 0x05 },//add dword ptr ds:[0x3107B0],eax
  10.     { 0x02, 0x05 },//add al,byte ptr ds:[0x3107B0]
  11.     { 0x00, 0x05 },//add byte ptr ds:[0x3107B0],al
  12.     { 0x39, 0x05 },// cmp dword ptr ds:[0x3107B0],eax
  13.     { 0x38, 0x05 },//cmp byte ptr ds:[0x3107B0],al
  14.     { 0x3B, 0x05 },//cmp eax,dword ptr ds:[0x3107B0]
  15.     { 0x3A, 0x05 },//cmp al,byte ptr ds:[0x3107B0]
  16.     /*-----------------EDI------------------------*/
  17.     { 0x8B, 0x3D },//mov edi, dword ptr ds : [0x302420];
  18.     { 0x89, 0x3D },//mov dword ptr ds : [0x302420], edi
  19.     { 0x03, 0x3D },//add edi, dword ptr ds : [0x302420];
  20.     { 0x01, 0x3D },//add dword ptr ds : [0x302420], edi
  21.     { 0x2B, 0x3D },//sub edi, dword ptr ds : [0x302420];
  22.     { 0x29, 0x3D },//sub dword ptr ds : [0x302420], edi
  23.     { 0x39, 0x3D },//cmp dword ptr ds : [0x30F008], edi
  24.     { 0x3B, 0x3D },//cmp edi, dword ptr ds : [0x30F008]
  25.     /*--------------------EBX-------------------------*/
  26.     { 0x8B, 0x1D },//002D1248    8B1D 20243000   mov ebx, dword ptr ds : [0x302420];
  27.     { 0x89, 0x1D },//002F3A62    891D 70563100   mov dword ptr ds : [0x315670], ebx
  28.     { 0x03, 0x1D },//00177FA8    031D 20243000   add ebx, dword ptr ds : [0x302420]
  29.     { 0x01, 0x1D },//00177FA8    011D 20243000   add dword ptr ds : [0x302420], ebx
  30.     { 0x2B, 0x1D },//002D1248    2B1D 20243000   sub ebx, dword ptr ds : [0x302420];
  31.     { 0x29, 0x1D },//00177FA8    291D 20243000   sub dword ptr ds : [0x302420], ebx
  32.     { 0x39, 0x1D },//002D15B3    391D 08F03000   cmp dword ptr ds : [0x30F008], ebx
  33.     { 0x3B, 0x1D },//00177FA8    3B1D 08F03000   cmp ebx, dword ptr ds : [0x30F008]
  34.     /*----------------------ECX-------------------------*/
  35.     { 0x8B, 0x0D },//002D1248    8B0D 20243000   mov ecx,dword ptr ds:[0x302420]          ;
  36.     { 0x89, 0x0D },//002F3A62    890D 00F03000   mov dword ptr ds:[0x30F000],ecx
  37.     { 0x03, 0x0D },//00177FA8    030D 20243000   add ecx,dword ptr ds:[0x302420]
  38.     { 0x01, 0x0D },//00177FA8    010D 20243000   add dword ptr ds:[0x302420],ecx
  39.     { 0x2B, 0x0D },//002D1248    2B0D 20243000   sub ecx,dword ptr ds:[0x302420]  
  40.     { 0x29, 0x0D },//00177FA8    290D 20243000   sub dword ptr ds:[0x302420],ecx
  41.     { 0x39, 0x0D },//002D15B3    390D 08F03000   cmp dword ptr ds:[0x30F008],ecx
  42.     { 0x3B, 0x0D },//00177FA8    3B0D 08F03000   cmp ecx,dword ptr ds:[0x30F008]
  43.     /*---------------------EDX-------------------------*/
  44.     { 0x8B, 0x15 },//002D1248    8B15 20243000   mov edx,dword ptr ds:[0x302420]          ;
  45.     { 0x89, 0x15 },//002F3A62    8915 00F03000   mov dword ptr ds:[0x30F000],edx
  46.     { 0x03, 0x15 },//00177FA8    0315 20243000   add edx,dword ptr ds:[0x302420]
  47.     { 0x01, 0x15 },//00177FA8    0115 20243000   add dword ptr ds:[0x302420],edx
  48.     { 0x2B, 0x15 },//002D1248    2B15 20243000   sub edx,dword ptr ds:[0x302420]  
  49.     { 0x29, 0x15 },//00177FA8    2915 20243000   sub dword ptr ds:[0x302420],edx
  50.     { 0x39, 0x15 },//002D15B3    3915 08F03000   cmp dword ptr ds:[0x30F008],edx
  51.     { 0x3B, 0x15 },//00177FA8    3B15 08F03000   cmp edx,dword ptr ds:[0x30F008]
  52.     /*---------------------ESI-------------------------*/
  53.     { 0x8B, 0x35 },//002D1248    8B35 20243000   mov esi,dword ptr ds:[0x302420]          ;
  54.     { 0x89, 0x35 },//002F3A62    8935 00F03000   mov dword ptr ds:[0x30F000],esi
  55.     { 0x03, 0x35 },//00177FA8    0335 20243000   add esi,dword ptr ds:[0x302420]
  56.     { 0x01, 0x35 },//00177FA8    0135 20243000   add dword ptr ds:[0x302420],esi
  57.     { 0x2B, 0x35 },//002D1248    2B35 20243000   sub esi,dword ptr ds:[0x302420]  
  58.     { 0x29, 0x35 },//00177FA8    2935 20243000   sub dword ptr ds:[0x302420],esi
  59.     { 0x39, 0x35 },//002D15B3    3935 08F03000   cmp dword ptr ds:[0x30F008],esi
  60.     { 0x3B, 0x35 },//00177FA8    3B35 08F03000   cmp esi,dword ptr ds:[0x30F008]
  61.     /*-----------------------赋值立即数--------------------------------*/
  62.     { 0xC7, 0x05 },//003016B1    C705 B0453100 9C7C3000   mov dword ptr ds : [0x3145B0], 00307C9C
  63.     { 0xC6, 0x35 },//00177FAE    C605 B0453100 30   mov byte ptr ds : [0x3145B0], 0x30
  64.     { 0x83, 0x25 },//003016FE    8325 D41A3100 00   and dword ptr ds : [0x311AD4], 0x0
  65.     { 0x83, 0x0D },//00177FAE    830D D41A3100 00   or dword ptr ds : [0x311AD4], 0x0
  66.     { 0x83, 0x35 },//00177FAE    8335 D41A3100 00   xor dword ptr ds : [0x311AD4], 0x0
  67.     { 0x80, 0x25 },//00177FB4    8025 D41A3100 00   and byte ptr ds : [0x311AD4], 0x0
  68.     { 0x80, 0x0D },//00177FAE    800D D41A3100 00   or byte ptr ds : [0x311AD4], 0x0
  69.     { 0x80, 0x35 },//00177FAE    8035 D41A3100 00   xor byte ptr ds : [0x311AD4], 0x0
  70.     /*------------------------------直接乘除加减----------------------------*/
  71.     { 0xF7, 0x25 },//00177FB4    F725 B0073100   mul dword ptr ds : [0x3107B0]
  72.     { 0xF7, 0x2D },//00177FB4    F72D B0073100   imul dword ptr ds : [0x3107B0]
  73.     { 0xFF, 0x0D },//00177FB4    FF0D B0073100   dec dword ptr ds : [0x3107B0]
  74.     { 0xFF, 0x05 },//00177FB4    FF05 B0073100   inc dword ptr ds : [0x3107B0]
  75.     { 0xF7, 0x35 },//00177FB4    F735 B0073100   div dword ptr ds : [0x3107B0]
  76.     { 0xF7, 0x3D },//00177FB4    F73D B0073100   idiv dword ptr ds : [0x3107B0]
  77.     /*----------------------------跳转和压栈出栈----------------------------*/
  78.     { 0xFF, 0x15 },//002D1077    FF15 28203000   call dword ptr ds : [0x302028];
  79.     { 0xFF, 0x25 },//002D1744 - FF25 70243000   jmp dword ptr ds : [0x302470]
  80.     { 0xFF, 0x35 },//002F35E5    FF35 2C3F3100   push dword ptr ds : [0x313F2C]
  81.     { 0x8F, 0x05 }//002F35E5    8F05 2C3F3100   pop dword ptr ds : [0x313F2C]
  82. };
复制代码
动作代码之后便是需要重定位地址)

    通过比较找到不同的位置后,向前查找有没有类似于“2B05”这类动作代码,找到后,便确定是一个需要重定位的地址,记录它在文件中的偏移。有的时候查找到的重定位地址中包含上面的动作代码,

这样就会对重定位地址判断出错,所以才借用了一个反汇编引擎重复确认一下。



   详细的东西还是看代码吧,代码有点渣,不过都有注释。


RelocFix.zip (186.03 KB, 下载次数: 18)


联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:Scylla x86.Imports.Reconstruction.v.0.9.8 汉化版
下一篇:易语言模块的反编译工具和支持库反编译工具,可以反编译成txt格式的
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-5-18 21:04 , Processed in 0.395516 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表