壳的世界学习笔记

课1


课2

什么是脱壳

经常说脱壳,也用很多方法脱过壳,现在有点更深的认识了

一个程序被加壳的话他一定被做了以下的事情:

1 被加密了各个节

2 输入表肯定被清除或者保存到另外一个地方去了(还可能不是以原来输入表结构的形式,可能自己发明一个结构来存储输入表)

3 跳到OEP

加壳的程序执行时会做以下的事情:

1 还原各个节的代码

2 把IAT的地址还原(程序运行的时候并不需要用到输入表,而只需要用到IAT)

3 用Import_Rec(如果不嫌麻烦去修复几百个函数的话用自己的手)根据IAT表来还原原始输入表的样子

根据目前的理解,大概是这样子了


找OEP的方法

Delphi

方法1 GetModuleHandle外面的一层函数就是OEP附近了

方法2 搜索Delphi7 跳转表上面的一个函数,再直接搜索跳转表最后一个项


VC

方法1 GetVersion附近

方法2 msvcrt.__set_app_time附近

方法3 GetSystemAsFileTime附近

方法4 找特征码(为防Stolen code找后一点代码)


BC++

方法1 特征,找吧找吧


通用的方法

退出法:在课程里面用的是delphi,我在对其他程序好像用不了,原理不太明白


最后做了一个脱ASPack 2.12的练习,用的是退出法,重建输入表用的是Import-Rec,没什么特别的


课3

讲了完美脱壳,就是改下PE头,按照原语言生成的区段还原区段,云云


课4

介绍了几种加密壳的原理,如简单的ACprotectAPI重定向,没什么意义好像


课5

讲脱壳脚本的,略


课6

在这课里面学到了点东西,讲的是脱SoftDefender

分离壳和进程的方法:

先用一个API监视工具看下CreateProcess的位置,找到一个跳过此函数的je指令,把这个指令运行时的Z标志位改掉就可以分离进程

到OEP的方法:

分离进程之后在401000下一个内存访问断点,断下来之后单步跟一下直到401000处的代码被解码完毕。然后搜索delphi的特征码来到OEP

patchIAT加密的方法:

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值