吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5596|回复: 4
收起左侧

[分享] 一点脱壳省精力的想法

  [复制链接]
hkfans007 发表于 2009-10-13 12:22
我个人认为没有必要对所有的外壳代码都要深究其意义,这样太耗精力了,会很累很累,需要抓住关键的代码进行分析,集中火力研究关键的代码,对于一般的外壳来说,大概有以下几个关键代码需要进行分析:

1. 解压解密各个区段数据的外壳代码进行分析,一般这一步都可以省略

2. 处理IAT的代码,可能是经过加密的,需要分析,抓出各个加密后的API函数的地址,记录下来,做修复IAT用。

3. IAT相关代码之后,分析如何到达OEP。

当然要抓到这3个点的关键代码也是需要相当的经验的,因为过程中会有很多的反调试的代码,所以,跟踪这些反调试的代码也是对外壳代码进行分析的一个部分,也是值得耗费精力去研究如何绕过这些反调试反跟踪的代码。

抓住以上关键部分的外壳代码的方法: 【均于最简单外壳所有技术分析^_^】

1. 抓住解压解密各个区段数据的外壳的代码,应该是对未加壳前的区段内存下硬件写入断点,或者相关的内存写入断点。

对于高级的外壳的处理方法: [留空,以后懂了再说].......................

2. 抓住IAT处理的外壳代码的方法: 对于最简单的外壳应该是对GetProceAddress, LoadLibraryA函数下断点,返回后一般能看到外壳加载IAT。。当然外壳的其他部分也会调用,这个应该容易辨别..

对于高级的外壳的处理方法: [留空,以后懂了再说].......................

3. 对于反调试之类的代码,可能有的外壳对发现调试器给出的反应很明显,简单的外壳的话就是调用一些系统API函数来做对发现调试器后的一些处理。所以我们可以对能造成这种结果的相关API进行跟踪。。哎,不过现在高级的外壳,基本上下API断点都没有用了,因为都是经过加密的,外壳和被加密的程序都不在调用原本的系统API函数了,而是调用外壳自己的函数 (当然这些函数很大一部分是抄系统API函数代码的).

对于高级的外壳的处理方法: [留空,以后懂了再说]......................


4. 对于OEP,要怎么走到? 是不是在跟踪完IAT的代码后,一步一步地F8过去?现在高级的外壳,把OEP搞个稀巴烂,把OEP的代码搬来搬去,一句话在外壳申请的内存中,一句话在被加密程序的区段中。(如果是像VC++的入口代码都是差不多的,还能搬回来。。如果遇到VM就不要说了,放弃吧。。)


本文要表达的意思或者是【入门人士的疑问】有两个:

1. 是不是应该就需要只对这些关键的外壳代码进行分析? 因为不是所有外壳都是UPX,从头到尾的过程也就那么些代码? 【毕竟人的精力和体力都是有限的】【这种是不是浮躁的表现呢?前辈指点】当然如果是想写外壳的例外吧?

我按照前辈的意见好好去分析ASPACK,想要达到能看懂所有的汇编代码所做的目的,分析一阵子,刚开始还很有力气,两下半就没气了,【累就一个字】, 所以我就开始发牢骚,写这个,希望得到前辈们的一些指点,希望能少走一些弯路。。。


2. 如何找到并且到达这些关键的外壳代码? 各位前辈都是过来人,可否透露一些呢?呵呵

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hkfans007 发表于 2009-10-14 16:32
奇怪,为什么有人加分,却没人愿意留下个意见啊?????
томму 发表于 2009-10-14 22:49
xm19850806 发表于 2009-10-17 10:36
小黑冰 发表于 2009-10-17 16:31
象我们这些菜鸟一般到了OEP能、很开心了``````
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 17:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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