最近开始做一些游戏安全的事情...
首先,我从最简单的APEX的驱动保护开始研究的...找了好多好多的资料.看了好多好多视频....大多数都是过时的...心累..
第一步...实现了关于对于pchunter驱动的隐藏...
核心代码:
auto v_ret_status{ STATUS_SUCCESS }; auto v_self_entry = static_cast<wdk::PKLDR_DATA_TABLE_ENTRY>(a_self_driver_object->DriverSection); wdk::PKLDR_DATA_TABLE_ENTRY v_fist_entry = nullptr; UNICODE_STRING v_pch_sys_name = { 0 }; wdk::PKLDR_DATA_TABLE_ENTRY v_target_entry{ nullptr }; RtlInitUnicodeString(&v_pch_sys_name, L"PCHUNTER*"); v_fist_entry = v_self_entry; __try { do { if (v_self_entry->BaseDllName.Buffer != nullptr) { if (FsRtlIsNameInExpression(&v_pch_sys_name, &v_self_entry->BaseDllName, TRUE, nullptr)) { v_target_entry = v_self_entry; break; } v_self_entry = reinterpret_cast<wdk::PKLDR_DATA_TABLE_ENTRY>(v_self_entry->InLoadOrderLinks.Blink); } } while (v_self_entry->InLoadOrderLinks.Blink != reinterpret_cast<PLIST_ENTRY>(v_fist_entry)); } __except (EXCEPTION_EXECUTE_HANDLER) { return NULL; } if (v_target_entry) { //p_HideDriver(v_target_entry,0); const PLIST_ENTRY v_target_entry_pointer = &(v_target_entry->InLoadOrderLinks); RemoveEntryList(v_target_entry_pointer); //这里有个坑,感谢汇编兄帮我们踩了 v_target_entry_pointer->Flink = nullptr; v_target_entry_pointer->Blink = nullptr; }
以上代码引用自 https://github.com/luciouskami/AnotherApexDebug 这个GG的...
用这位GG的方法..只要提前开始PCHUNTER... 不能改名... 然后启动驱动..就可以隐藏PCHUNTER的驱动了..
接下来,我会一步一步的去学习如果绕过这个EAC的驱动保护...好像APEX的EAC是入门级...正好适合我慢慢学习吧...
PS: 别买那些教程...我花了几千块...全是口水话...除了代码有点价值..但已经过时了... 希望也像我刚刚想玩玩这个同学引以为戒!! 动手研究实战最重要了...