二进制安全游戏安全C/C++汇编 [2021]解决掉一些常见的hypervisor检测向量 目标:让游戏能在vmware中顺利运行 CPUID部分: 安排掉CPUID_HYPERVISOR_VENDOR: 阅读全文 2021-02-24 huoji 0 条评论
无线安全游戏安全C/C++汇编 [2021]EAC开始使用MSR_IA32_TSX_CTRL崩溃虚拟机 EAC在rust上加了这一段: ```cpp bool EnableTsx() { unsigned __int64 tdx; // r9 unsigned __int64 newtsx; // rax tdx = __readmsr(0x122u); _disable(); __writemsr(0x122u, tdx & 0xFFFFFFFFFFFFFFFEui64); newtsx = __readmsr(0x122u); __writemsr(0x122u, tdx); _enable(); return (newtsx & 1) == 0; } _BOOL8 IsTsxEnabled() { unsigned __int64 tsx_bit; // rax tsx_bit = __readmsr(0x122u); return (tsx_bit & 1) == 0; } void SetupTSXAbort() { __asm { xbegin locret_4B759 xend } } ``` 0x122 = MSR_IA32_TSX_CTRL 来源于ESL反作弊 实际上使用的是CVE-2019-19338的方法 https://www.openwall.com/lists/oss-security/2019/12/10/3 如你所见 解决方法也很简单 handle msr RW 阅读全文 2021-01-12 huoji 0 条评论
游戏安全C/C++易语言 [2020]某些垃圾虚拟机级别反作弊绕过 这里不点名某个抄了公开hv的反作弊HOOK了openprocess的反作弊. 他们反作弊在openprocess的hook里面使用了类似的判断: ```cpp If(dwProcessId == MydwProcessId) ``` 一行代码绕过: 你用openprocess打开某游戏的时候,pid+1就行了 原理是这样的: https://bbs.pediy.com/thread-248583.htm pid,tid. 其实也是一个EPROCESS ETHREAD地址的索引。pid,tid都是4的倍数 ```cpp 所以: If(dwProcessId == MydwProcessId) 应该改为: #define ID_ALIGN(ProcessId) ((ProcessId) >> 2) if(ID_ALIGN(dwProcessId) == ID_ALIGN(MydwProcessId) ``` 阅读全文 2020-09-08 huoji 2 条评论
二进制安全游戏安全C/C++汇编 [20200]BE开始使用xgetbv与xsetbv指令检测虚拟机 ```cpp __int64 __fastcall sub_FFFFF8007E3FBF7A(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int128 *a5) { int v5; // edx int v6; // ecx int v7; // er8 int v8; // er9 __int64 result; // rax ((void (*)(void))loc_FFFFF8007E378864)(); __asm { xgetbv } ((void (*)(void))loc_FFFFF8007E33F6D6)(); __asm { xsetbv } ((void (*)(void))loc_FFFFF8007E32C136)(); ((void (*)(void))loc_FFFFF8007E31B5A2)(); LODWORD(result) = __indword(v5); return sub_FFFFF8007E3FBFAB(v6, v5, v7, v8, a5); } ``` xgetbv与xsetbv指令被用于类似于之前的检查一样的时间测试. > Seems that there are two others found after more thorough analysis. Using xgetbv/xsetbv in a loop similar to the one in the article. XSETBV is an unconditionally exiting instruction so naturally it fits for the time based attack. 阅读全文 2020-09-06 huoji 0 条评论
二进制安全C/C++Shellcode [2002]反病毒虚拟机的设计与实现 C++完整PDF + 代码 反病毒虚拟机的设计与实现。 [虚拟机的设计与实现CC++.pdf](https://key08.com/usr/uploads/2019/12/3215221604.pdf) 阅读全文 2019-12-05 huoji 0 条评论
二进制安全 [2009]基于启发式技术检测复杂病毒 [目录] [0x01].简介 [0x02].Anunnaki变形病毒技术分析 2.1.Anunnaki特性简介 2.2.Anunnaki执行流程 2.3.get kernel base address 2.4.anti av-emulator and anti av-heuristic 2.5.polymorphic 2.5.1 Offensive polymorphic engine 功能描述 2.5.2 仿真无效指令设计 2.5.3 poly engine的实现 2.6.EPO technology 实现 2.7.感染后文件对比 [0x03].防御技术的困境 3.1.特征码的失效 3.2.关于主动防御技术 3.3.关于”云“安全技术 3.4.关于启发式检测技术 [0x04].寻找复杂病毒的漏洞 4.1.重定位手段 4.2.跨节区跳转 4.3.怪异的macros 4.4.EPO跟踪 4.5.polymorphic的不足 4.6.关于检测 [0x05].启发式技术检测Anunnaki 5.1.构造仿真器 5.2.执行时数据的跟踪 5.3.没有终结的对抗 [0x06].其他 阅读全文 2019-11-19 huoji 0 条评论