月度归档:2015年07月

软件加壳技术 6 – 脱壳

 

前面“壳的基本构造”提到了壳的装载和内存中的脱壳(更确切的含义应该是释放)。这节的脱壳指的是逆向分析过程中,分析人员做的破解工作,两个脱壳含义不同。第二个脱壳的产物不在内存中,而是磁盘上的可执行程序。如果对于一种壳,已有脱壳机,可以利用脱壳机静态方式下直接脱壳。如果没有,只有用debugger,在调试状态下手动尝试脱壳。… Read more

软件加壳技术 5 – 增加对抗

这里所谓的对抗技术并非加壳衍生出来的,没有壳也可以用,统称anti-reversing。在基础的壳技术上对抗技术,实质上就是给逆向分析工作挖坑,使分析工作无法进行或者增大分析的工作量。这类的小技术很多,不少和特定OS甚至是特定调试器相关,不太容易分类。一个点可以分属多个类别,例如Stolen… Read more

软件加壳技术 4 – 壳的基本构造

 

看了几本书,包括最新的国外引进的图书之后,觉得还是08年看雪论坛的《加密与解密》第三版写的系统,可以覆盖的方面都覆盖到了。书中的16章有一个有源码的范例壳。开源中比较著名的是压缩壳UXP。现在的加壳技术其实主要功能是各种对抗,例如anti-dump,anti-debug,代码混淆,虚拟机技术。但抛开这些对抗功能,一个基本的甚至压缩也不包括的壳的原理其实简单,但这些才是“壳”这个技术独有的,也是加壳技术存在的基础。… Read more

软件加壳技术 1 – 概述

 

软件加壳和脱壳技术是看雪论坛的独门绝技。看雪论坛,一般性质的软件开发人员很少访问的。主要内容是软件的加密和破解,也有系统攻击的内容。在大家都泡浏览器的时代,PC端活跃软件数量应该下降了一个数量级,但手机端接棒了,手机端会沿用相关技术,因此软件的破解、防破解仍然是活的技术。… Read more

C++对象模型的学习 7 – C++ ABI

ABI(Application binary interface)是和API可以类比的概念。API用于定义语言级别,源代码级别的接口,目的是保证代码接口的标准和稳定。ABI也类似,目的是实现二进制级别的兼容,二者都很重要。因为即使同一操作系统的同一编译器的不同的版本之间如果没有保证ABI兼容,那么即使API稳定不变,也无法做到应用的向后兼容。ABI的例子有,System… Read more