在之前的帖子里记录下逆向某茅台MK-V参数的过程并提出了3个疑问: 1、so使用了什么反调试手段? 2、可以从哪些切入点去分析这些反调试? 3、除了动态调试是否有办法对so静态反编译?
于是又去逆向了so的加载过程,在看完三万条汇编代码后(大多是无意义的垃圾代码),自己来回答自己的疑问。代码我就不贴了,实在太长。
1、so首先通过调用__NR_mprotect系统调用改写了自身某段内存属性为可读可写可执行,以备后用。又拷贝了自身两处数据组成长度0x241c的数据,将0x241c长度的数据解压,长度变为0x3ed8,然后通过一定操作映射到长度为0x6000的新地址,并进行了一定的初始化操作。然后调用析构函数,释放共享内存,对一些痕迹进行清理。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)