飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3191|回复: 3

[求助] 关于asprotect加壳的DLL..高手进来看一下吧~~!

[复制链接]
  • TA的每日心情
    擦汗
    2019-2-12 09:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2006-11-16 22:53:47 | 显示全部楼层 |阅读模式
    asprotect加壳的DLL..

    ASPack 与  asprotect 加的壳

    我用OD 已经到达OEP 地址~!

    但是为什么 在 Dump DLL 的时候 出现


    无法读取被调试进程(00400000.....004F2FFF)的内存.


    就这个问题不知道怎么解决。请各位高手指点一下。 。

    给个思路...


    附带DLL文件下载地址:


    http://free5.ys168.com/?dllwj

    在 DLL 目录里面 DLL.RAR 文件





    希望有人指点一下 思路
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-11-17 22:40:44 | 显示全部楼层
    用Ollydbg手脱ASPack加壳的DLL

    【目标程序】:ASPack加壳的EdrLib.dll。附件中含有输入表和UnPacked以供参考。

    【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

    【调试环境】:WinXP、Ollydbg1.10、LordPE、ImportREC

    —————————————————————————————————
    【脱壳过程】:

    一、重定位表RVA + OEP

    代码:--------------------------------------------------------------------------------
    003B7001 60 pushad//进入OD后停在这
    003B7002 E8 03000000 call EdrLib.003B700A
    --------------------------------------------------------------------------------
    提供一个简便寻找ASPack加壳DLL的重定位处理代码段的方法!
    Ctrl+S在“整个段块”搜索命令序列:


    代码:--------------------------------------------------------------------------------
    mov ecx,dword ptr ds:[esi+4]
    sub ecx,8
    shr ecx,1
    --------------------------------------------------------------------------------
    找到在003B71F6处!我们在其上的003B71DA处下断,F9运行,中断。


    代码:--------------------------------------------------------------------------------
    003B71C8 8785 35050000 xchg dword ptr ss:[ebp+535],eax
    003B71CE 8B95 22040000 mov edx,dword ptr ss:[ebp+422]
    003B71D4 8B85 2D050000 mov eax,dword ptr ss:[ebp+52D]
    003B71DA 2BD0 sub edx,eax
    //这里其实就是检测与映像基址是否相符,和ASProtect的方法一样。不符则重定位处理!★
    003B71DC 74 79 je short EdrLib.003B7257
    //可以在这里改标志位Z=1,使其跳转,这样脱壳后就不需要修改基址了。 ★
    003B71DE 8BC2 mov eax,edx
    003B71E0 C1E8 10 shr eax,10
    003B71E3 33DB xor ebx,ebx
    003B71E5 8BB5 39050000 mov esi,dword ptr ss:[ebp+539]
    //[ebp+539]=003B754C=00006000 ★ 这个00006000就是重定位表的RVA!
    003B71EB 03B5 22040000 add esi,dword ptr ss:[ebp+422]
    003B71F1 833E 00 cmp dword ptr ds:[esi],0
    003B71F4 74 61 je short EdrLib.003B7257
    //重定位处理完毕后这里就跳转 在003B7257处下断
    003B71F6 8B4E 04 mov ecx,dword ptr ds:[esi+4]
    //找到这里
    003B71F9 83E9 08 sub ecx,8
    003B71FC D1E9 shr ecx,1
    003B71FE 8B3E mov edi,dword ptr ds:[esi]
    003B7200 03BD 22040000 add edi,dword ptr ss:[ebp+422]
    003B7206 83C6 08 add esi,8
    003B7209 66:8B1E mov bx,word ptr ds:[esi]
    003B720C C1EB 0C shr ebx,0C
    003B720F 83FB 01 cmp ebx,1
    003B7212 74 0C je short EdrLib.003B7220
    003B7214 83FB 02 cmp ebx,2
    003B7217 74 16 je short EdrLib.003B722F
    003B7219 83FB 03 cmp ebx,3
    003B721C 74 20 je short EdrLib.003B723E
    003B721E EB 2C jmp short EdrLib.003B724C
    003B7220 66:8B1E mov bx,word ptr ds:[esi]
    003B7223 81E3 FF0F0000 and ebx,0FFF
    003B7229 66:01041F add word ptr ds:[edi+ebx],ax
    003B722D EB 1D jmp short EdrLib.003B724C
    003B722F 66:8B1E mov bx,word ptr ds:[esi]
    003B7232 81E3 FF0F0000 and ebx,0FFF
    003B7238 66:01141F add word ptr ds:[edi+ebx],dx
    003B723C EB 0E jmp short EdrLib.003B724C
    003B723E 66:8B1E mov bx,word ptr ds:[esi]
    003B7241 81E3 FF0F0000 and ebx,0FFF
    003B7247 01141F add dword ptr ds:[edi+ebx],edx
    003B724A EB 00 jmp short EdrLib.003B724C
    003B724C 66:830E FF or word ptr ds:[esi],0FFFF
    //这里把许多重定位数据变为FFFF ★ NOP掉!
    003B7250 83C6 02 add esi,2
    003B7253 E2 B4 loopd short EdrLib.003B7209
    003B7255 EB 9A jmp short EdrLib.003B71F1//循环处理

    003B7257 8B95 22040000 mov edx,dword ptr ss:[ebp+422]//这里下断,ESI=003B63B0
    003B725D 8BB5 41050000 mov esi,dword ptr ss:[ebp+541]
    003B7263 0BF6 or esi,esi
    003B7265 74 11 je short EdrLib.003B7278
    --------------------------------------------------------------------------------


    当我们中断在003B7257处时,重定位处理完毕。此时ESI=003B63B0,就是重定位表的结束地址啦。
    得到重定位表信息:
    RVA=00006000,大小=003B63B0-003B6000=000003B0


    现在我们去OEP吧,呵呵。Ctrl+B 在当前位置下搜索Hex值:61 75,即popad、jnz


    代码:--------------------------------------------------------------------------------
    003B73AF 61 popad//找到这里,下断!
    003B73B0 75 08 jnz short EdrLib.003B73BA
    003B73B2 B8 01000000 mov eax,1
    003B73B7 C2 0C00 retn 0C
    003B73BA 68 C9113B00 push EdrLib.003B11C9
    003B73BF C3 retn//飞向光明之巅! ^O^
    --------------------------------------------------------------------------------
    代码:--------------------------------------------------------------------------------
    003B11C9 55 push ebp//OEP ★
    003B11CA 8BEC mov ebp,esp
    003B11CC 53 push ebx
    003B11CD 8B5D 08 mov ebx,dword ptr ss:[ebp+8]
    003B11D0 56 push esi
    003B11D1 8B75 0C mov esi,dword ptr ss:[ebp+C]
    003B11D4 57 push edi
    003B11D5 8B7D 10 mov edi,dword ptr ss:[ebp+10]
    003B11D8 85F6 test esi,esi
    003B11DA 75 09 jnz short EdrLib.003B11E5
    --------------------------------------------------------------------------------
    用LordPE选中Ollydbg的loaddll.exe的进程,在下面的列表里选择EdrLib.dll,然后完整脱壳,得到dumped.dll。
    —————————————————————————————————
    二、输入表 + PE修正
    随便从程序找一个API调用,如:
    003B10FD FF15 20403B00 call dword ptr ds:[3B4020]; kernel32.GetVersion
    在转存中跟随3B4020,上下看到许多函数地址,很明显的可以找到IAT开始和结束的地址:
    代码:--------------------------------------------------------------------------------
    003B3FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    003B4000 1D 51 C4 77 1C 3A C4 77 3E E7 C4 77 CC D2 C4 77 .Q.w.:.w>..w...w

    003B40B0 CE 7C E5 77 05 74 E5 77 F9 81 E5 77 EB 41 E4 77 .|.w.t.w...w.A.w
    003B40C0 66 C8 E5 77 3E 18 F6 77 00 00 00 00 00 00 00 00 f..w>..w........
    --------------------------------------------------------------------------------
    开始地址=003B4000
    结束地址=003B40C9
    运行ImportREC,注意:去掉“使用来自磁盘的PE部首”的选项!
    选中Ollydbg的loaddll.exe的进程,然后点“选取DLL”,选择EdrLib.dll,填入RVA=00004000、大小=000000C8 ,点“Get Import”,得到输入表。改OEP=000011C9,FixDump!
    用LordPE修正dumped_.dll的重定位表RVA=00006000、大小=000003B0,保存之。
    再用LordPE修正dumped_.dll的基址为003B0000,OK,脱壳完成啦。
    如果在003B71DC处跳过了重定位处理,则不需要修改基址。


    记得是fiy大虾写的文章
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-11-17 22:41:37 | 显示全部楼层
    试试 ASPack All Versions UnPacKer.By.PE_Kill
    等脱壳机~~
    /:D 转FLY大虾的话~
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-2-12 09:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2006-11-18 18:00:10 | 显示全部楼层
    晕 不行。。 壳我是已经脱了。。 就是

    在 Dump DLL 的时候 出现


    无法读取被调试进程(00400000.....004F2FFF)的内存.

    使用 LordPE Dump DLL 后。

    资源无法修复。


    网游难民  
      你下载下来调试一下看看。 跟我的问题一样吗?
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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