1. 加壳语言.
现在的壳多数都是汇编的.但本人汇编水平一般,连olly都使不好,所以只能放弃汇编.我见过delphi和VB做的壳.VB做的那个真的不错,有机会上传到这里,让大家看看.
本人是C/C++的忠实用户,而且C和汇编很接近了,所以选择了C++做壳.
2. 加壳原理
加壳原理我想大家都很清楚,无非是wrap oep, remove reloc, 然后在最后价格stub.修改oep.
话说起来轻悄,就像造原子弹,中学生都知道e=m*c2就ok了,但我们都造不出来.我的观点是加壳就想造汽车,原来的程序就是发动机,而解密就是把汽车拆了,取出发动机.所以我们还是要仔细考虑如何加壳.
3. 具体的步骤
(1) 我是认真研究了bigboot的文章,参考了bambam才下的手.不过大家如果要学习bambam,就从找bambam的bug开始吧,他里面一共有4个重大bug,如果能找出来,你就可以自己做壳了.
(2) 先做个dll,做stub.为什么不用exe?bigboot说compiler crash,我说是exe自己就可能crash.这个exe不是正常加载的,release中又没有reloc,他不crash可能吗? 所以我们用dll做stub. stub的入口要指定,否则没法修改 oep.stub就是你自己的程序,所以想干什么都可以,也就是说在程序启动时,天下是你的.
这里面要注意的是:
(a) 你stub加载的地址不是40000,也不是1000000,所以所有的恢复工作都有个便宜量,这个偏移量就是你的入口地址.
(b) stub中可以使用任何函数,如果要用其他的dll,最好使用隐形链接.因为后面要修改reloc.
(c) stub一定是release的,debug的话程序容易乱.
(d) 跳回是就是 push oep+dwOffSet, ret就ok了.唯一的汇编,呵呵.
(3) 给app加壳
这个需要个exe(手动加壳太土了吧,呵呵).他干的工作就是最糙的工作---变化指针. 加壳的过程就是指针不断变化,修改...
关于具体操作的过程bigboot说了
现在的壳多数都是汇编的.但本人汇编水平一般,连olly都使不好,所以只能放弃汇编.我见过delphi和VB做的壳.VB做的那个真的不错,有机会上传到这里,让大家看看.
本人是C/C++的忠实用户,而且C和汇编很接近了,所以选择了C++做壳.
2. 加壳原理
加壳原理我想大家都很清楚,无非是wrap oep, remove reloc, 然后在最后价格stub.修改oep.
话说起来轻悄,就像造原子弹,中学生都知道e=m*c2就ok了,但我们都造不出来.我的观点是加壳就想造汽车,原来的程序就是发动机,而解密就是把汽车拆了,取出发动机.所以我们还是要仔细考虑如何加壳.
3. 具体的步骤
(1) 我是认真研究了bigboot的文章,参考了bambam才下的手.不过大家如果要学习bambam,就从找bambam的bug开始吧,他里面一共有4个重大bug,如果能找出来,你就可以自己做壳了.
(2) 先做个dll,做stub.为什么不用exe?bigboot说compiler crash,我说是exe自己就可能crash.这个exe不是正常加载的,release中又没有reloc,他不crash可能吗? 所以我们用dll做stub. stub的入口要指定,否则没法修改 oep.stub就是你自己的程序,所以想干什么都可以,也就是说在程序启动时,天下是你的.
这里面要注意的是:
(a) 你stub加载的地址不是40000,也不是1000000,所以所有的恢复工作都有个便宜量,这个偏移量就是你的入口地址.
(b) stub中可以使用任何函数,如果要用其他的dll,最好使用隐形链接.因为后面要修改reloc.
(c) stub一定是release的,debug的话程序容易乱.
(d) 跳回是就是 push oep+dwOffSet, ret就ok了.唯一的汇编,呵呵.
(3) 给app加壳
这个需要个exe(手动加壳太土了吧,呵呵).他干的工作就是最糙的工作---变化指针. 加壳的过程就是指针不断变化,修改...
关于具体操作的过程bigboot说了