单线程异步搜索的速度超过我的预期, 搜索速度并不随着线程数的增加而加快,超过阀值后,多线程带来的效率已经被线程切换所抵消了,甚至拖慢. 阀值由机器磁盘I/O本身的速度和搜索的算法相关. 晚上简单的写了一个多线程异步搜索,效果还行.
绕过XueTr隐藏进程路径
晚上调了下,效果还行,测试的XueTr 0.37 测试我的Ares.隐藏自身,XueTr已经无能为力了. 顺便试了一下IceSword也是可以的, linxer的XueTr写的很强大,只是利用了XueTr的一个进程获取逻辑来绕过. 这东西说多了就不好玩了.
关于EPROCESS
内核里维护进程信息很重要的一个结构, lkd> dt _EPROCESS nt!_EPROCESS +0×000 Pcb : _KPROCESS +0x06c ProcessLock : _EX_PUSH_LOCK +0×070 CreateTime : _LARGE_INTEGER //进程创建时间 +0×078 ExitTime : _LARGE_INTEGER //进程退出时间 +0×080 RundownProtect : _EX_RUNDOWN_REF +0×084 UniqueProcessId : Ptr32 Void //PID +0×088 ActiveProcessLinks : _LIST_ENTRY +0×090 QuotaUsage : [3] Uint4B +0x09c QuotaPeak : [3] Uint4B +0x0a8 CommitCharge : Uint4B +0x0ac PeakVirtualSize : Uint4B [...]
Inline Hook ntdll!LdrLoadDll对抗远程注入
很鸡肋的一个自我保护,只能对付Ring3层的远程dll注入,甚至不能对抗代码注射, 当然,ring0下修改线程起始地址注入更不用说。 Ares里ring3层自我保护的一部分,当然还有其他的,比如抹掉csrss里的句柄 NTSTATUS NTAPI FakeLdrLoadDll ( IN PWCHAR pszSearchPath OPTIONAL, IN PULONG puDllCharacteristics OPTIONAL, IN PUNICODE_STRING pusDllName, OUT PHANDLE phDllHandle ) { NTSTATUS Status=STATUS_UNSUCCESSFUL; do { //一些过滤…省略 Status=OriginLdrLoadDll(pszSearchPath,puDllCharacteristics,pusDllName,phDllHandle); } while (FALSE); return Status; }
使用windbg下载symbol
做安全开发的人不能没有windbg,更不能没有symbol 发现在microsoft官方下载的那个符号文件补丁不全,看了下帮助文档,原来windbg可以手动下载这些。 使用windbg自带的工具symchk.exe即可 比如我用的是 C:\Program Files\WinDbg>symchk /r c:\windows\system32 /s SRV*c:\windows\symbols\ *http://msdl.microsoft.com/download/symbols 即可下载system32下的所有PE文件的符号文件
socket模拟实现http
其实在http://hi.baidu.com/cdutboy/blog 之前发过。代码疯子 同学说了那这里也贴一下,写的很粗糙,能用的那种。 SocketHttp.h声明部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [...]
干掉导入表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [...]
