08 2023 档案
摘要:压缩壳并不一定会使so的体积变小,这一点和pc的压缩壳是相同的。 压缩壳实现思路 so被压缩后和之前分析的情况基本类似,这里主要看第一个PT_LOAD段的内存大小是远大于文件大小的。 对应的内存大小比文件大小多出来的这部分就是.bss了,就是第一个PT_LOAD段中最后的那段内存了。 这段内存保存了
阅读全文
摘要:## 函数虚拟化 函数虚拟化保护和函数混淆保护整体思路差不多,将函数划分为若干个基本块。之前每一个基本块的代码是替换为等效花指令混淆,虚拟化的话就是将原有指令进行翻译,用自定义虚拟机去解释执行。 每次进入虚拟机执行前先保存寄存器环境  so文件被加固后`pro
阅读全文
摘要:## 内存泄漏问题 ``` class BaseA { public: BaseA() { printf("BaseA::BaseA()\n"); }; ~BaseA() { printf("BaseA::~BaseA()\n"); }; virtual void func1() {}; }; cl
阅读全文
摘要:对于ue4而言,符号如果暴露出来的可以直接通过导出表寻找GWorld,GUObjectArray。ue4.23版本以前的通过GNames函数,ue4.23版本及其以后的通过FNamePool::FNamePool构造函数寻找GName。对于未暴露符号的寻找方法和ue5未暴露符号的三件套找法一样。 #
阅读全文
摘要:4.23版本及其以上与低版本的GName解析有较大差别。 ## 解析GName 4.23版本及其以上的`GName`保存在内存池`NamePoolData`中,`NamePoolData`实际就是一个静态全局数组,保存的就是`FNamePool`对象。 `获取到`GName`指针,对应的GName指针就是`static TNameEntryArray* Names`,利用`u
阅读全文