Obsidium 1.3重定位修复(不用补区段)

来源:互联网 发布:c#修改浏览器数据 编辑:程序博客网 时间:2024/05/07 04:53

Obsidium 1.3重定位修复(不用补区段)


最近在看OB的脱壳教程,(天草壳世界),还有ximo的OB教程,今天利用空余时间,终于把程序修复成功,记录如下:

  1. 找到VirtualAlloc,VirutalProtect,利用这几个函数来找到重定位的地方,然后把重定位处理的代码用xor来代替.

  2. 到伪OEP,然后把重定位的整个内存段DUMP下来,整个PE也DUMP下来,此时不用关闭OD.后面要修复一些TLS段的数据.

  3. 用WINHEX把PEDUMP.EXE打开,然后把1000H的字节内容复制下来(因为PE文件在32位机是以1000H对齐的),然后打开DUMP下的内存段,把刚才复制的内容贴到0000起始的位置.保存成UNPACK.EXE

  4. 这里的代码段和数据段是完整的,但资源段尚未修复,于是可以从DUMP.EXE里提取资源,我这里用Resfixer,因为那个DT_FixRes对我DUMP下来的PE程序那些RVA不能填充到我需要的数字,于是选了RESFIXER.这里关键是RVA的填写,因为最先DUMP下来的内存映像大小是55000H,于是这里new section RVA填56000,FILE ALIGNMENT填1000H,因为从内存中DUMP下来就以这种对齐方式

  5. DUMP出资源后,就用PE编辑器把资源段加上,然后修复相应的RVA字段(如果有需要).还有资源目录表中的RVA也作相应更改.

  6. 此时运行程序,出错了.最初想到的是TLS表没修复,于是打开修复的文件,查看TLS目录,发现是乱码,于是从加壳文件中得到信息,TLS大小为18H,于是把TLS段从409000H这个DUMP下来,修补填上.tls字段重新计算填上,重新运行,OK.

  7. 最后,TLS段修复也可以不DUMP这个段,直接找个大量0000的空位应该也是可以的.

0 0
原创粉丝点击