首页
社区
课程
招聘
[求助]OD手脱UPX加壳的DLL-出现问题
发表于: 2005-11-14 20:35 4078

[求助]OD手脱UPX加壳的DLL-出现问题

2005-11-14 20:35
4078
我的系统是win xp,此DLL为VC++写.

―――――――――――――――――――――――――――――――――
一、得到重定位表RVA和OEP
            
代码:--------------------------------------------------------------------------------  

1004E1D0     807C24 08 01    cmp byte ptr ss:[esp+8],1 //进入OD后停在这
1004E1D5     0F85 86010000   jnz HDLL.1004E361
1004E1DB     60              pushad

--------------------------------------------------------------------------------

            
不用跟踪,Ctrl+S 在当前位置下搜索命令序列:

代码:--------------------------------------------------------------------------------

xchg ah,al
rol eax,10
xchg ah,al
add eax,esi

--------------------------------------------------------------------------------

            
找到在1004E346处,在其上mov al,byte ptr ds:[edi]的1004E337处下断,F9运行,断下
            

代码:--------------------------------------------------------------------------------

1004E337     8A07            mov al,byte ptr ds:[edi]
//EDI=1004B500-当前基址10040000=0000B500  //重定位表的RVA
1004E339     47              inc edi
1004E33A     09C0            or eax,eax
1004E33C     74 22           je short HDLL.1004E360
//重定位数据处理完毕则跳转
1004E33E     3C EF           cmp al,0EF
1004E340     77 11           ja short HDLL.1004E353
1004E342     01C3            add ebx,eax
1004E344     8B03            mov eax,dword ptr ds:[ebx]
1004E346     86C4            xchg ah,al
1004E348     C1C0 10         rol eax,10
1004E34B     86C4            xchg ah,al
1004E34D     01F0            add eax,esi
1004E34F     8903            mov dword ptr ds:[ebx],eax
1004E351   ^ EB E2           jmp short HDLL.1004E335

--------------------------------------------------------------------------------

            
在1004E360处下断,F9运行,断下,重定位数据处理完毕
当我们在1004E360处中断下来时,EDI=1004D3D8,就是重定位表结束的地址
            

代码:--------------------------------------------------------------------------------

1004E360     61              popad  //此时EDI=1004D3D8
1004E361   - E9 B527FCFF     jmp HDLL.10010B1B

--------------------------------------------------------------------------------

            

代码:--------------------------------------------------------------------------------

10010B1B     55              push ebp  //OEP
10010B1C     8BEC            mov ebp,esp
10010B1E     53              push ebx
10010B1F     8B5D 08         mov ebx,dword ptr ss:[ebp+8]
10010B22     56              push esi
10010B23     8B75 0C         mov esi,dword ptr ss:[ebp+C]
10010B26     57              push edi
10010B27     8B7D 10         mov edi,dword ptr ss:[ebp+10]
10010B2A     85F6            test esi,esi
10010B2C     75 09           jnz short HDLL.10010B37

--------------------------------------------------------------------------------

            
用LordPE选中Ollydbg的loaddll.exe的进程,在下面的列表里选择HDLL.dll,然后完整脱壳,得到dumped.dll。
            
            
―――――――――――――――――――――――――――――――――
二、输入表
            
            
随便从程序找一个API调用,如:

代码:--------------------------------------------------------------------------------

1000E628     FF15 44C20210   call dword ptr ds:[1002C244]      ; kernel32.GlobalFree

--------------------------------------------------------------------------------

在转存中跟随1002C244,上下看到许多函数地址,很明显的可以找到IAT开始和结束的地址:
            

代码:--------------------------------------------------------------------------------

1002BFF4  00 00 00 00 00 00 00 00 00 00 00 00 E2 68 DB 77
1002C004  5B 66 DB 77 9A 22 DA 77 D8 17 DA 77 BB 28 DA 77

................

1002C5A4  D1 0A AC 7C 2B E1 AD 7C 17 0C AD 7C 38 CD B0 7C
1002C5B4  B4 D1 B0 7C D0 6D AE 7C 9D 48 AC 7C 00 00 00 00
1002C5C4  00 00 00 00 E5 3B 02 10 18 10 00 10 7F 15 00 10

--------------------------------------------------------------------------------

            
开始地址=1002C000
结束地址=1002C5C1
            
运行ImportREC,注意:去掉“使用来自磁盘的PE部首”的选项!
            
选中Ollydbg的loaddll.exe的进程,然后点“选取DLL”,选择EdrLib.dll,填入RVA=0000C000、大小=000005C1 ,点“Get Import”,
"无效"...晕了~~~找了半天原因...找不出???求助各位高手!!!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
如果DLL没有重定位,就不要去掉ImportREC的“使用来自磁盘的PE部首”选项
2005-11-14 20:43
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还是一样无效哦,请版主看看我的东西,是按你脱DLL的步骤来的~帮我看看哪里错了没啊,,是不是RAV跟大小有问题啊??好像只脱了一半啊~~~导入都出来了,就是资源没有出来啊~~~
2005-11-14 20:58
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
不清楚你说的问题是什么
资源如何和输入表有何密切关系?
2005-11-14 21:03
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我说的资源是用eXeScope查看,就是资源没出来啊~~其它的都出来了
我就是问是不是RVA跟大小有没有误??还是哪有出了问题??还请版主看看
2005-11-14 21:10
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
6
脱壳后论坛搜索DT_FixRes修复资源
2005-11-14 21:12
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
应该也没用吧,因为我Get Imports的时候无效啊???
填入OEP,Fix Dump的时候也不行~~~哎~~郁闷...
对了,版主,我把这个DLL发给你,你可以帮我看看吗?
2005-11-14 21:23
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
8
先看看基础知识吧
虽然麻烦,但很重要
http://www.pediy.com/tutorial/chap8/Chap8-1.htm

DLL基址是多少?
10000000?
RVA=0002C000
大小=000005C1
2005-11-14 21:39
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
基础就是麻烦啊~呵呵,,不过没基础就会弄不出来啊~~是不
有时间我会看看的~
基址=10040000
对了,我刚下了那个修复资源的,可以修复啊~~谢谢你哦!!!
顺便问下FLY哥,你有ASPROTECT 2.x 脱壳系列吗?
2005-11-14 22:09
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
PE文件格式要了解哦~~有时间一定要看看!
2005-11-15 07:58
0
游客
登录 | 注册 方可回帖
返回
//