首页
社区
课程
招聘
[原创]加密与解密第13章学习笔记
发表于: 2010-5-26 16:24 9028

[原创]加密与解密第13章学习笔记

2010-5-26 16:24
9028

最近看了加密与解密3脱壳这一章,感觉很好。自己也尝试脱了一些壳,偶得一点心得,写出来分享一下,前辈莫笑......
      首先说下壳加载的一般流程,保护入口参数-获取API地址-解密原程序区块-IAT的初始化-重定位项的处理-HOOK API-跳转到OEP,这其中,IAT的初始化-重定位项的处理-HOOK API这三个过程自己在脱壳的过程中没有怎么感受到(有关IAT在一个壳中遇到过,晕菜了,),所以认识不很深,就不乱说了。还是说些自己遇到的吧。
     1.保护入口参数
   这可能是我体会最深的,很多压缩壳就是这样,比如ASPack,入口一般都是pushad,这种壳我一般都是根据ESP定律下硬件断点,效果很不错。而加密壳呢,入口一般就不是这样了,大多的加密壳入口一般都是跳转或者Call,一F8就飞了,对于这种壳,我一般下内存断点,呵呵。不过像ASProtect偶就没招了,(哪位大大教教我怎么脱ASProctect啊)
   2.获取API地址
   这里面有几个API很重要,LoadLibrary,GetModuleHandle,GetProcAddress这三个API函数,LoadLibrary是加载DLL用的,GetModuleHandle是获取DLL句柄用的,而GetProcAddress是获取输入函数的地址。外壳需要用到的函数一般都是用这三个函数调用。再说说我单步跟踪遇到的几个API,VirtualAlloc,VirtualProtect,VirtualFree。大家知道,壳在加载过程中需要还原各个区块,这时候它就会分配一块内存空间,在这块空间上完成解密。
   3.解密区块
   解密一般是按区块顺序解密的,这点要牢记,脱壳时很有用哦。
   最后说点寻找OEP的心得,对于压缩壳,可以先尝试ESP定律,对于加密壳,可以先尝试内存断点,一般两次,一次下在.rdata,.data等区块,第二次下在.text区块,为什么呢,呵呵,前面说了,解密区块哦。另外对各种编译语言的特点也要有些了解哦,特别是入口,不然的话找到OEP你都不知道那是OEP,
    好了,偶得一点心得,前辈莫笑,继续学习中....................


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 506
活跃值: (318)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
虽然 没啥 技术含量,但是来支持一个。
2010-5-26 20:13
0
雪    币: 531
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习中!顶下!
2010-8-21 14:26
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
4
楼主好习惯。
2010-9-23 11:24
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个进来学习下 这点俺已经笑得了
2010-9-23 11:49
0
雪    币: 457
活跃值: (49)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
有空就进来看看心得
2010-9-26 11:47
0
雪    币: 440
活跃值: (119)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
不错不错,一起学习脱壳~~~
2010-9-26 13:55
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼主好习惯,经常总结分享一下经验,大家都有收获哦
2010-9-27 19:38
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
知识很基础,还是顶一顶。
2010-10-5 19:48
0
游客
登录 | 注册 方可回帖
返回
//