| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 黑客技术 >> 破解专题 >> 文章正文 用户登录 新用户注册
  手动脱壳入门第十六篇 MoleBox 2.x 续之Patch IAT加密       ★★★ 【字体:
手动脱壳入门第十六篇 MoleBox 2.x 续之Patch IAT加密
作者:weiyi75    文章来源:CnXHacker.Net    点击数:    更新时间:2005-4-12    

【脱文动画】http://cnxhacker.net/donghua/crack/200607/245.html

【脱文标题】 手动脱壳入门第十六篇 MoleBox 2.x 续之Patch IAT加密

【脱文作者】 weiyi75[Dfcg]

【作者邮箱】 weiyi75@sohu.com

【作者主页】 Dfcg官方大本营

【使用工具】 Peid,Ollydbg,ImportREC1.6f,Loadpe

【脱壳平台】 Win2K/XP

【软件名称】 IMCaster ICQ E-Marketer

【软件简介】 IMCaster ICQ E-Marketer是一个强大的ICQ即时信息查找工具。你可以根据不同的条件(如:性别、年龄、国家或者职业等等)搜索在线ICQ用户,向他们发送信息以提高你网站或企业的知名度。

【软件大小】 2.61M

【下载地址】 http://www.imcaster.com/Downloads/IMCastSetupEnt.exe 或 二哥推荐的教学篇里面下载

【加壳方式】 MoleBox 2.x.x -> Mole Studio [Overlay]

【保护方式】 MoleBox压缩壳

【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)

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

【脱壳内容】

首先Peid查壳,为MoleBox 2.x.x -> Mole Studio [Overlay],OD载入运行,无任何异常,判断其为压缩壳。

前面二哥的修复方法大家都看到了,继然IAT可以加密就可以IAT解密,实际是跳过。

一口气写OD脱壳脚本写到16篇后发现这篇IAT被加密了,只写个找OEP的脚本没意思,要写脚本首先得会脱这个壳。

脱壳后发现程序不能运行,这时需要用Imprec修复引入函数表(Import Table)

在Oep处填8636F,点IT自动搜索,然后点获输入信息,有9个指针没有修复。

IAT的起始地址是89000,大小B80

根据Imprec提示89110 处的指针被加密

就从这里入手,也可以随便找个加密指针处入手。

OD载入程序,命令行

Hw 489110

因为这个地址先前写入的地址是对的,然后程序将这个地址加密为Imprec不认识的东西,我们就要跟踪这个过程。

F9运行

004D1237     8B45 F8             mov eax,dword ptr ss:[ebp-8]      ; imcast.00489110
004D123A     40                  inc eax
004D123B     40                  inc eax
004D123C     8945 F8             mov dword ptr ss:[ebp-8],eax
004D123F     0FB745 E2           movzx eax,word ptr ss:[ebp-1E]
004D1243     C1F8 08             sar eax,8
004D1246     0FB74D E2           movzx ecx,word ptr ss:[ebp-1E]

堆栈友好提示

0012FCD8    7FFDF000
0012FCDC    47D047D0
0012FCE0    47334733
0012FCE4    5EBC5EBC
0012FCE8    72BF72BF

继续3次F9,注意堆栈友好提示

004D13CE     FF15 24804D00       call dword ptr ds:[<&KERNEL32.Get>; KERNEL32.GetProcAddress
004D13D4     8B4D F0             mov ecx,dword ptr ss:[ebp-10]
004D13D7     8901                mov dword ptr ds:[ecx],eax
004D13D9     EB 26               jmp short imcast.004D1401
004D13DB     8B55 F0             mov edx,dword ptr ss:[ebp-10]
004D13DE     8B02                mov eax,dword ptr ds:[edx]
004D13E0     25 FFFF0000         and eax,0FFFF
004D13E5     50                  push eax
004D13E6     8B4D F4             mov ecx,dword ptr ss:[ebp-C]
004D13E9     51                  push ecx
004D13EA     FF15 24804D00       call dword ptr ds:[<&KERNEL32.Get>; KERNEL32.GetProcAddress

堆栈友好提示

0012FE2C    77E7ED4C  KERNEL32.SetFilePointer //这个和EAX中是一样的,都是正确指针
0012FE30    6BC4B4AC  MFC42.#1576
0012FE34    0049428A  imcast.0049428A
0012FE38    004943FE  ASCII "KERNEL32.dll"
0012FE3C    00489110  imcast.00489110
0012FE40    77E60000  KERNEL32.77E60000
0012FE44    00493294  imcast.00493294

现在我们

dd 489110 往上看到489100被加密了,呵呵,我说过可以随便找个加密指针处入手。

004D13D9    /EB 26               jmp short imcast.004D1401

004D1401     8B4D EC             mov ecx,dword ptr ss:[ebp-14]     ; imcast.004943FE
004D1404     51                  push ecx
004D1405     8B55 F0             mov edx,dword ptr ss:[ebp-10]
004D1408     52                  push edx
004D1409     E8 12050000         call imcast.004D1920 //如果单步过了这里,就Over了。显然它是个加密Call,NOP掉程序正常运行,进去看看。

******************************************

004D1920     55                  push ebp
004D1921     8BEC                mov ebp,esp
004D1923     83EC 10             sub esp,10
004D1926     C745 FC 00000000    mov dword ptr ss:[ebp-4],0
004D192D     833D 30F04D00 00    cmp dword ptr ds:[4DF030],0
004D1934     75 0A               jnz short imcast.004D1940

004D1940     8B45 08             mov eax,dword ptr ss:[ebp+8]  //注意这时EAX=77E7ED4C是正确指针
004D1943     8B08                mov ecx,dword ptr ds:[eax]
004D1945     51                  push ecx
004D1946     8B0D 30F04D00       mov ecx,dword ptr ds:[4DF030]
004D194C     E8 AB380000         call imcast.004D51FC
004D1951     8945 F8             mov dword ptr ss:[ebp-8],eax
004D1954     837D F8 00          cmp dword ptr ss:[ebp-8],0
004D1958     74 45               je short imcast.004D199F
004D195A     8D55 F0             lea edx,dword ptr ss:[ebp-10]
004D195D     52                  push edx
004D195E     6A 04               push 4
004D1960     6A 04               push 4
004D1962     8B45 08             mov eax,dword ptr ss:[ebp+8]
004D1965     50                  push eax
004D1966     FF15 70804D00       call dword ptr ds:[<&KERNEL32.Vir>; KERNEL32.VirtualProtect
004D196C     85C0                test eax,eax
004D196E     75 0A               jnz short imcast.004D197A

004D197A     8B4D 08             mov ecx,dword ptr ss:[ebp+8]
004D197D     8B55 F8             mov edx,dword ptr ss:[ebp-8]
004D1980     8B02                mov eax,dword ptr ds:[edx]
004D1982     8901                mov dword ptr ds:[ecx],eax //可恶这里; imcast.004D490E
EAX=004D490E  dword ptr ds:[ecx] 是推算被加密的地址00489110,实际也是,看OD信息框就知道了。我们必需让EAX是正确的指针。我们看到004D1940 处EAX被赋值,而且当时的EAX是正确指针。

这就容易了

004D1940     8B45 08             mov eax,dword ptr ss:[ebp+8]

修改为

004D1940     8BC0                mov eax,eax                       ; KERNEL32.SetFilePointer
004D1942     90                  nop

自给自足

004D1984     8D4D F4             lea ecx,dword ptr ss:[ebp-C]
004D1987     51                  push ecx
004D1988     8B55 F0             mov edx,dword ptr ss:[ebp-10]
004D198B     52                  push edx
004D198C     6A 04               push 4
004D198E     8B45 08         &n

[1] [2] 下一页

文章录入:IceRiver    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    病毒清除技巧u.vbe和u.bat手
    Infostealer.Gampass病毒的手
    教你如何手动驱逐流氓软件
    木马病毒stup.exe的手动解决
    手动删除“sxs.exe病毒”方法
    “随机8位数字病毒”手动清除
    雅虎发布messenger高危补丁 
    带注释手动注入脚本命令总结
    简单介绍有关壳的加载步骤及
    不脱壳直接破解软件的方法
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.