这图是我自己写的程序分析的。用IDA分析,也是提示入口点在0的位置,无法定位start。
启动之后,会出现两个同映像名称的进程用资源监视器查看:A:cpu利用率为0,线程数少,内存数量也少,加载的模块也只有5个基础模块和它本身,自身目录下的DLL一个也没加载,看起来不足以支持它实现功能。B:CPU利用率一直很高,线程数高达78个,内存用了很多,加载了很多DLL,看起来似乎这才是一个真的进程。
我一开始看到入口点为0的时候就懵了,想了一会,想:会不会是在加载DLL的时候让DLL来解出正确的代码。然后一查看加载的DLL,没有加载陌生的看起来像是用来解码的DLL……我现在彻底懵逼了。请问,还有什么其他方式可以实现入口点为0的加壳吗?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
什 TLS
TLS表的TLS项有TLS回调函数,先于入口点执行。我之前写的一个壳使用了这样的方式,实现入口点任意花指令:https://knsoft.org/Products/SoftShield/
因为TLS回调函数先于入口点执行,所以入口点不论是什么内容,或者无入口点,都可以不影响程序运行。