欢迎来到 嗅灵易学

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

脱壳------ElThumbs.dll其实是个可执行文件,被作者玩了个花巧而已。 (4千字)

脱壳------ElThumbs.dll其实是个可执行文件,被作者玩了个花巧而已。 (4千字)

对于懂怎么脱Asprotect壳的朋友就看看【前言】【后记】就行了。
脱壳 ------ EldoS Thumbnailer v1.0.0.45
前言:人说:"瞎猫碰上死老鼠",俺居然也有撞上这大运的时候。呵呵!
分析:(以下对可执行文件简称为EXE,动态链接库简称为DLL)
用FileInfo分析可知EXE没有加壳,而DLL用Asprotect+Aspack2000加壳。对怎么脱DLL的壳还是头一次碰上。先多分析分析,用ShowDep看看EXE中对DLL的引入情况。没有发现对ElThumbs.dll的引入!看看DLL中的输出函数的情况,没有输出函数!yi!!!怎么发现Trace为可用的!!!!一般只有EXE才只用的呀!奇怪!先试试再说,单击Start Tracing按钮,居然运行了!(当然倒地)。到此一切谜团已解,把ElThumbs.dll改名为WhoAmI.EXE直接运行成功!ElThumbs.EXE不过是个......。以后不过是用对Asprotect加壳程序的脱壳方法而已。对此有深入分析的文章太多了。我只是简要介绍一下对此脱壳的一些步骤。
目标文件:    WhoAmI.EXE (由ElThumbs.dll换名而来)
加壳方式:    Asprotect+Aspack2000
所用工具:    SoftICE v4.05,FrogsICE v0.43,ICEDump 6.0.16,ProcDump v1.62
检测工具:    FileInfo,ShowDep

1、用ProcDump分析基本信息
Entry Point:    000D7001
Size of image:    000E9000
Image Base:    00450000
.idata Section
Virtual Offset:    000B4000
Virtual Size:    00003000
因此 .idata Section内存的地址偏移为 450000+B4000=504000
2、运行FrogsICE,用SoftICE的Loader加载WhoAmI.exe。
3、设断点,使中断后显示.idata Section信息
bpx loadlibraya do "dd 450000+B4000"
4、按F5,中断!此时还没有到时候,按F5继续,又中断。这回.idata
Section显示的数据是"干净"的,保存到文件。下指令
/dump 504000 3000 c:\temp\dump.bin
5、按F12回到程序领空,继续跟踪,直到如下(大家跟踪时的地址可能不一样哦,看代码吧)
(提示:从跟踪LoadLibrarya到跟踪到此,并不远,经过三两个ret就到了,具体多少,自己把握)
015F:00440B19  59                  POP      ECX
015F:00440B1A  648910              MOV      FS:[EAX],EDX
015F:00440B1D  EB13                JMP      00440B32
015F:00440B1F  E9C820FFFF          JMP      00432BEC
015F:00440B24  66B80E00            MOV      AX,000E
015F:00440B28  E81FF4FFFF          CALL      0043FF4C
015F:00440B2D  E82622FFFF          CALL      00432D58
015F:00440B32  8B4508              MOV      EAX,[EBP+08]
015F:00440B35  8B10                MOV      EDX,[EAX]
015F:00440B37  8B4508              MOV      EAX,[EBP+08]
015F:00440B3A  035018              ADD      EDX,[EAX+18]
015F:00440B3D  8B4508              MOV      EAX,[EBP+08]
015F:00440B40  8B401C              MOV      EAX,[EAX+1C]
015F:00440B43  E880F9FFFF          CALL      004404C8    <--以前的按F10没关系,这里要按F8进入
015F:00440B48  5F                  POP      EDI
015F:00440B49  5E                  POP      ESI
015F:00440B4A  5B                  POP      EBX
015F:00440B4B  59                  POP      ECX
015F:00440B4C  59                  POP      ECX
015F:00440B4D  5D                  POP      EBP
015F:00440B4E  C20400              RET      0004
015F:00440B51  8D4000              LEA      EAX,[EAX+00]
015F:00440B54  E82B38FFFF          CALL      KERNEL32!GetCommandLineA
015F:00440B59  A3F8664400          MOV      [004466F8],EAX
015F:00440B5E  C3                  RET
   
6、按F8进入Call 004404C8内部继续跟踪,就到了终点站了。欢呼!
015F:004404C8  89C4                MOV      ESP,EAX                          
015F:004404CA  89D0                MOV      EAX,EDX                           
015F:004404CC  8B1D34564400        MOV      EBX,[00445634]                   
015F:004404D2  89041C              MOV      [EBX+ESP],EAX                     
015F:004404D5  61                  POPAD                                       
015F:004404D6  50                  PUSH      EAX    <--此时EAX=5009B8,所以Entry Point=5009B8-450000=B09B8
015F:004404D7  C3                  RET    <--这里就要跳转到真正的Entry Point了
7、下指令
/dump 450000 E9000 c:\temp\dump.exe
8、修补工作开始,用ProcDump改各Section的Offset为RVA大小,PSize为VSize大小。改Entry Point为B09B8,改Directory中的Import Table的RVA为B4000,大小为3000。
9、最后别忘了把dump.exe中偏移B4000开始的3000字节用dump.bin替换掉。运行OK!
后记:
注册码,俺没有,问题有两个。(哈哈,俺的老毛病也犯了,问大家几个问题?)
1、据说"Interactive Disassembler v4.04"是目前最好的反汇编工具",不知国内有哪个地方下载?
2、该工具和W32Dasm相比,块头不一般哦,20M,自然有其过人之处,请问它强在哪里?有什么新功能吗?(和W32Dasm相比)

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

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

0 0 0 举报
复制成功