• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> 软件应用 >> 病毒安全 >> 详细内容
 

推荐文章

 
 

热点文章

  • 网吧任我行
  • 诺基亚手机杀毒软件使用指南
  • 加密软件PGP教程
  • 如何防止黒客远程盗取QQ密码
  • 远程盗ADSL帐号密码竟如此简单?
  • 如何破解PCAnyWhere的密码
  • 破解 女性基础体温管理软件 v1.2
  • 破万象.免费上网
  • 使用ARP命令来绑定IP和MAC地址
  • 完全免费!国外杀毒软件AVG新版试用!
  • C语言学习系统 v3.0 破解过程
  • IE再现漏洞,立刻升级新补丁!
 
 

相关文章

 
 

百度搜索

 
 

Thebat!139脱壳详情及对Asprotect加壳保护的一点小结

  • 阅览次数:
  • 文章来源: CodePub整理
  • 原文作者: 不详
  • 整理日期: 2006-10-05
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

  Thebat!139脱壳详情及对Asprotect加壳保护的一点小结,小弟本想脱thebat141的壳的,但小弟下载的thebat141却没有加壳,没办法,还是拿thebat139开刀了。

如果小弟下面的内容有错漏的地方,请给小弟指正。

小弟的脱壳方法和冰毒的不同,他的方法我用不了,我用Procdump32脱不了thebat的壳。

废话少说,let's go!

所用工具:soft-ice405、icedump6015、procdump1.6.2、ultraedit5.0。

首先加载softice,再加载icedump。运行procdump32,点击PE Editor,选择thebat.exe

文件,我们要记一下数据了:size of image:00314000  image base:00400000,

点击sections,记下.idata的数据:virtual siza:00003000  virtual offset:0022E000 ,这样我们

可以知道.idata在内存中的地址为:0062E000,长度为:3000

启动Symbol Loader,载入thebat.exe(加载过icedump后,softice可以成功拦截thebat),点击一下Load,

马上被拦截,如下:

XXX:006FF001    PUSHAD  **第一个PUSHAD指令**

XXX:006FF002    CALL  006FF008  按F8进入

XXX:006FF007    NOP

XXX:006FF008    POP  EBP 按F10一直来到:

XXX:006FF0D6    CALL  006FF0DE  按F8进入

在这之后的一段程序要走的小心一点,我建议用F8,如果离开了thebat的就按一下F12,然后再按F8,

一直来到:               

XXX:006FFA3B    PUSHAD  **第二个PUSHAD指令**    改按F10一直来到:

XXX:006FFB6C    POPAD    **和第二个PUSHAD指令是一对**

XXX:006FFB6D    POP EBP

XXX:006FFB6E    RET  0008  这个CALL走完了,来到:

XXX:006FF09F    MOV  ECX,EAX  按F10来到:

XXX:006FF0D6    CALL  006FF0DE  按F8进入,然后一直按F10来到:                     

XXX:006FFA3B    PUSHAD  **第三个PUSHAD指令** (难道又回去了?当然不是。)按F10直到:             

XXX:006FFB6C    POPAD    **和第三个PUSHAD指令是一对**

XXX:006FFB6D    POP  EBP

XXX:006FFB6E    RET  0008 走完这个CALL来到:

XXX:006FF1D3    PUSH  04

XXX:006FF1D5    PUSH  00001000  按F10一直到:

XXX:006FF218    CALL  006FF220  按F8进入,之后按F10一直到:

XXX:006FF2A2    CALL  006FF2AA  这里开始一直按F8,如果离开了thebat,就按一下F12,再按F8来到:

XXX:0099E001    PUSHAD  **第四个PUSHAD指令** F10一直来到:

XXX:0099E5C5    POPAD    **和第四个PUSHAD指令是一对**

XXX:0099E5C6    JNP  009E5D0

XXX:0099E5C8    MOV  EAX,00000001

XXX:0099E5CD    RET  000C

XXX:0099E5D0    PUSH  00990B60

XXX:0099E5D5    RET  终于走完了这个CALL,来到这里:

XXX:00990B60    PUSH  EBP 按F10来到:

XXX:00990B8A    CALL  00983DC4  F8进入,F10来到:

XXX:00990956    CALL  009904F4  F8进入,F10来到:

XXX:00990A11    CALL  00990110

XXX:00990A16    XOR  EAX,EAX    (这里和冰毒一样,我可省了不少时间:-))

这里下: PAGEIN D 62E000 3000 D:\IDATA.BIN    得到完整的.idata部分

继续F10来到:         

XXX:00990B43    CALL  009904C8  F8进入,来到这里:

XXX:009904D5    POPAD  **和第一个PUSHAD指令是一对**

XXX:009904D6    PUSH  EAX

XXX:009904D7    RET  (这里冰毒用Procdump32脱壳。可以吗?我怎么不行?谁可以就教教我。)

走完这里来到:     

XXX:0061C528  PUSH  EBP

来到这里后Soft-Ice中显示着‘THEBAT!CODE+0021B526',有‘CODE'的字样,我们可以知道thebat是

用Broland写,成的,而且我们已经进入了主程序,可以脱壳了。

下: PAGEIN D 400000 314000 D:\THEBAT.EXE  得到脱壳后的thebat.exe文件 

用ultraedit5.0打开thebat.exe及idata.bin,将idata.bin的内容替换到thebat.exe的22E000--230FFF中。

这样得到的程序还不能用,启动Procdump32修改文件Sections。

将每一项Section的 Raw Size ==> Virtual Size  ; Raw Offset ==> Virtual Offset

将程序入口改成:0021C528(61C528-400000=21C528)

我记得冰毒说这样脱壳的程序不行,当然了!因为他漏了最重要的一步(趁冰毒不在,说了他不少坏话,

大家可不要告诉他呦:-D):

点击Procdump32中的 PE Editor-->Directory,将 Import Table 的值改成:0022E000

自此程序已脱壳成功,我们来小结一下:

小弟通过对几个用Asprotect加壳的软件脱壳,对Asprotect加的壳有的一定了解,发现了一点共有的特征,

用Asprotect加壳的软件会出现3到4对‘PUSHAD--POPAD'指令(用Aspack或Upx加壳的软件只会出现一对)

在走完这几对‘PUSHAD--POPAD'指令后,我们便进入到主程序了,可以开始脱壳。脱壳后的文件还要还

原PE文件头,要将完整的‘.idata'或‘.rdata'替换到脱壳后的文件中,至于到底是‘.idata'还是

‘.rdata'就要大家自己去判断了,最后修改文件的Sections、Entry Point、Import Table各项。这样也

就脱壳成功了。

baoleigz(暴雷)

本例常见问题:
1、请问thebat1.39中为何在 :00990A16 XOR EAX,EAX 处DUMP .idata,原理何在?
用Soft-ice载入程序后下‘D 62E000'屏幕上出现很多的‘??',这说明‘.idata'还没有解压出来。我们要在‘.idata'解压后的第一时间内把它Dump出内存。还记得我说过Asprotect加壳的程序会出现4对‘PUSHAD-POPAD'指令吗?通常走完第3个POPAD指令后开始找,还是下‘D 62E000'。我破过3个用Asprotect加壳的软件,发现‘.idata'好象也有规律,它们的前16个Byte很相似:1到12Byte的代码为‘00',13到15的代码为‘XX'(不同的软件不同),16Byte为‘00'。当我们来到: XXX:00990A11 CALL 00990110 下‘D 62E000'看到代码不是我上面提到的形式 XXX:00990A16 XOR EAX,EAX 下 ‘D 62E000'看到代码和我上面提到的形式一样 所以在这里DUMP出内存。记住掌握好时间,再走一段程序‘.idata'就又变了。 如果你有空就拿几个软件多练练,熟能生巧,别忘了总结。最后祝你好运!

一点补充: 小弟又对一个用Asprotect加壳的软件脱壳,发现.idata section的前16Byte代码未必是我提到的形式。 不过完整的.idata section和不完整的.idata section前16Byte代码肯定是一样的,我们可以先用Procdump32把文件的.idata section Dump一次,再用Uedit32打开Dump后的文件,查看前16Byte代码,最后以此为依据,在Soft-Ice中找到完整的.idata section后用IceDump把它Dump出内存。

  

上一篇:PHP编程技巧:看实例学正则表达式
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号