-
-
我对Crack的一点感想,望大家不吝赐教
-
发表于:
2005-4-5 19:23
4024
-
我对Crack的一点感想
我刚接触Crack不久,一来到看雪,思路豁然开朗,发现我以前写的程序加密方法简直就是砧板上的肉,任人宰割。不管我用什么加密算法,多么高深,多么难以破解,都难不住那些刚接触Crack不久的新手,简单的只需在可执行文件中修改那么一个字节(譬如:jnz=>jz :-) )。
我开始研究各种Crack的攻防战略。那我就将我最近研究花指令的一点心得和大家聊一聊,对高手这是小菜一碟,高手请不要见笑。
我觉得花指令的唯一目的不是阻止别人看你的代码,而是累死对手。所以,一定要将花指令搞得非常复杂(当然是在性能容许的情况下),我最近写了几个花指令,我觉得效果还是挺好的,来献丑一下:
1. 多个花指令相互呼应:
我们可以让多个花指令之间相互调用,这样造成Cracker不敢轻易的nop掉,比如:
[JunkCode1]
Jmp label_1_2
db _junkcode,_junkcode
label_1_1: pop eax
add eax,8
push eax
ret
db _junkcode
label_1_2: ....
[JunkCode2]
call label_1_1
db _junkcode,_junkcode(8 byte)
jmp label_2_1
db _junkcode
label_2_1: ....
在JunkCode1中,label_1_1至label_1_2之间的代码貌似Junk code,其实不是,它将被JunkCode2调用,如果这一段代码被Nop掉,程序将崩溃类似的,我们可以在JunkCode1中调用JunkCode2中的代码,而且,JunkCode1,JunkCode2可以分别处在不同的函数,这样会使Crack无法搞清什么是正常代码什么是Junk。我们甚至可以搞很多个JunkCode相互调用。
2. 可以在某些情况下激活花指令:
例如,我们可以在检测到程序被跟踪的情况下来调用花指令中的代码,而程序正常运行时不调用这些代码。
3. 将程序关键数据存放在花指令中:
这一点我没有试,我想肯定也是可以的,这样Crack还敢轻易的Nop掉你的花指令么?
以上是我的一些粗浅的想法,诸位老大见笑了。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法