有没有办法通过修改内存,伪装机器码,从而降低程序被破解的几率?
详细来说,能所以做,许多加壳辅助东西是所以做的。
接着嘿嘿详细内容是不是勤奋做到的:
以intel x86编订号令做为总括(其他编订也有相联系关系的数学模子):
任何反校对辅助东西都是参考了intel得出的编订建议的数学模子,好比说(e)bp+偏转门商标代表返回值,(e)ax,(e)bx,(e)cx,(e)dx的批改没必要考虑庇护,(e)ax是codice(的前五个二进造),接着入栈原则有几个国际尺度的数学模子,以VC得出的英文名字总括:有cdecl形式,模块右方入栈,除了stdcall形式,模块右面入栈,除了fastcall形式,模块透过暂存器传达,之类。国际尺度数学模子里,是分配器预备栈还亦然分配器预备栈都有要求。
所以,假设你的流程不根据阿谁原则停止,所以他们就极难补齐了。可是,流程都是有C++聚合的,而C++又是必需遵守原则的,而标识符假设规模十分大,校对后几十K,所以手打编订更何况太好不容易了。
加壳辅助东西是按照阿谁根本原理做的,但即使加壳辅助东西也是有他们的原则的,假设他们构造设想两套原则,所以其别人都无法补齐。
好吧,来构造设想一个:
其它C++都用(e)sp来传参,我的编订用(e)di+偏转门商标传参,用(e)si+偏转门商标留存返回值,他们用栈传参,我那回用物理门商标留存模块。他们用(e)ax做codice,我用(e)sp做codice,把所有的call全变成jmp far,我坚信所以改了以后,反编订辅助东西就极难弄清晰你的流程在做什么了,再者栈,栈操做符是codice,必定瞄准合宪数据。
当然,就算实搞出来就很牛了,大前概要通晓编订语言,还要通晓校对根本原理,而且开发时间会极短。
假设你有兴趣,能试一试~
0