ring3下伪装进程名绕过HS 部分Inline hook (by 小枫)
2012-07-12 02:25
459 查看
以前有人发过类似文章(或者说我抄袭了吧。),但是那个代码我测试了已经不能用了。貌似MFC上也会出错。这里我的代码可以在mfc上使用。
此方法不需注入就读写Hackshield的进程地址空间数据,以及其它API的Detour Hook。【不能用于过保护。】
HS白名单可用伪装的进程列表,
代码:
浅谈ImagePath映像路径
Q:
ImagePath是什么?
A:
执行程式的时候,系统会建立一些资料区块,里面放了该程式执行时的一些资料,例如:CommandLine(就是程式参数,像是XX谷就是透过CommandLine来决定的IP和Port)....等
而ImagePath就是其中的一项
Q:
为什么改ImagePath可以过HackShield的记忆体存取保护?
A:
因为HackShield对于NtOpenProcess、 NtReadVirtualMemory...等这几条API有做Hook,就是大家一直说的InlineHook和Deep Inline Hook,然后去找这是哪个程式呼叫的,再去去 得该程式的ImagePath判断是否为白名单,不然就拒绝呼叫,所以我们只要改掉ImagePath骗HackShield说我们是白名单上的程式(工 作管理员)。
Q:
ImagePath怎么改?
A:
透过一连串的结构、指标下去改就好了,但是Win7 64bit的架构似乎不太一样,虽然有找到结构体,但是似乎无效。
ImagePath的修改
ImagePath位于...
PEB->_RTL_USER_PROCESS_PARAMETERS->ImagePathName
所以说我们要先取得PEB的位址,再延着这条路径往下走去改..
(亦可使用ZwQueryInformationProcess这条API取得PEB基址)
获取ImagePathName并修改的关键代码如下(x86机子可用):
代码:
调用GetTaskMgr函数即可伪装自身的程序为taskmgr.exe,绕过部分的HS Inline Hook。
此方法不需注入就读写Hackshield的进程地址空间数据,以及其它API的Detour Hook。【不能用于过保护。】
HS白名单可用伪装的进程列表,
代码:
1. Name: patcher.exe 2. Name: WerFault.exe 3. Name: IAANTmon.exe 4. Name: avp.exe 5. Name: WmiApSrv.exe 6. Name: xsync.exe 7. Name: fssm32.exe 8. Name: LGDCORE.exe 9. Name: ACS.EXE 10.Name: ITPYE.EXE 11.Name: Joy2Key.exe 12.Name: JOYTOKEYHIDE.EXE 13.Name: JOYTOKEYKR.EXE 14.Name: JOYTOKEY.EXE 15.Name: DWM.EXE 16.Name: WMIPRVSE.EXE 17.Name: DK2.EXE 18.Name: CSTRIKE-ONLINE.EXE 19.Name: RAGII.EXE 20.Name: EKRN.EXE 21.Name: GOM.EXE 22.Name: GAMEMON.DES 23.Name: VAIOCAMERACAPTUREUTILITY.EXE 24.Name: IPOINT.EXE 25.Name: NMCOSRV.EXE 26.Name: DEKARON.EXE 27.Name: AUDIODG.EXE 28.Name: NGM.EXE 29.Name: TASKMGR.EXE 30.Name: HGSCRAPEDITORHELPER.EXE 31.Name: SETPOINT.EXE 32.Name: NMSERVICE.EXE 33.Name: NSVCAPPFLT.EXE 34.Name: UPSHIFTMSGR.EXE 35.Name: NOD32KRN.EXE 36.Name: IMJPCMNT.EXE 37.Name: TCSERVER.EXE 38.Name: SPOOLSV.EXE 39.Name: IEXPLORE.EXE 40.Name: EXPLORER.EXE 41.Name: WINLOGON.EXE 42.Name: SERVICES.EXE 43.Name: CSRSS.EXE 44.Name: LSASS.EXE 45.Name: SVCHOST.EXE
浅谈ImagePath映像路径
Q:
ImagePath是什么?
A:
执行程式的时候,系统会建立一些资料区块,里面放了该程式执行时的一些资料,例如:CommandLine(就是程式参数,像是XX谷就是透过CommandLine来决定的IP和Port)....等
而ImagePath就是其中的一项
Q:
为什么改ImagePath可以过HackShield的记忆体存取保护?
A:
因为HackShield对于NtOpenProcess、 NtReadVirtualMemory...等这几条API有做Hook,就是大家一直说的InlineHook和Deep Inline Hook,然后去找这是哪个程式呼叫的,再去去 得该程式的ImagePath判断是否为白名单,不然就拒绝呼叫,所以我们只要改掉ImagePath骗HackShield说我们是白名单上的程式(工 作管理员)。
Q:
ImagePath怎么改?
A:
透过一连串的结构、指标下去改就好了,但是Win7 64bit的架构似乎不太一样,虽然有找到结构体,但是似乎无效。
ImagePath的修改
ImagePath位于...
PEB->_RTL_USER_PROCESS_PARAMETERS->ImagePathName
所以说我们要先取得PEB的位址,再延着这条路径往下走去改..
(亦可使用ZwQueryInformationProcess这条API取得PEB基址)
获取ImagePathName并修改的关键代码如下(x86机子可用):
代码:
void GetTaskMgr() { ULONG Addr; const char taskmgr[] = "\\system32\\taskmgr.exe"; int length = strlen(taskmgr) + strlen(getenv("windir")) + 1; char* tmp = (char*)malloc(length); memset(tmp, 0, length); strcpy(tmp, getenv("windir")); strcat(tmp, taskmgr); wchar_t* tmp2; AnsiToUnicode(tmp, &tmp2); _asm { mov eax, fs:[0x30]; mov eax, [eax+0x10]; add eax, 0x3c; mov Addr,eax; } *(ULONG*)Addr=(ULONG)tmp2; } HRESULT AnsiToUnicode(LPCSTR pszA, LPOLESTR* ppszW) { ULONG cCharacters; DWORD dwError; if (NULL == pszA) { *ppszW = NULL; return NOERROR; } cCharacters = strlen(pszA)+1; *ppszW = (LPOLESTR) malloc(cCharacters*2); if (NULL == *ppszW) return E_OUTOFMEMORY; if (0 == MultiByteToWideChar(CP_ACP, 0, pszA, cCharacters, *ppszW, cCharacters)) { dwError = GetLastError(); free(*ppszW); *ppszW = NULL; return HRESULT_FROM_WIN32(dwError); } return NOERROR; }
调用GetTaskMgr函数即可伪装自身的程序为taskmgr.exe,绕过部分的HS Inline Hook。
相关文章推荐
- 小试X64 inline HOOK,hook explorer.exe--->CreateProcessInternalW监视进程创建
- kernel inline hook 绕过vice检测
- Ring 0 Inline Hook
- Linux内核通过inline hook实现隐藏进程
- Inline hook ObReferenceObjectByHandle,附加问题笔记做记录
- Inline hook ImmGetCompositionStringW获取中文输入
- 检测和恢复SSDT HOOK,INLINE SSDT HOOK
- rootkit hook之[三] inline hook
- SSDT Hook 对抗ring0 inline hook
- SSDT Hook的妙用-对抗ring0 inline hook
- Inline Hook IofCallDriver 截获所有IRP
- Inline Hook IofCallDriver 截获所有IRP
- hook api inline code
- Inline hook ImmGetCompositionStringW获取中文输入
- RING3下 内存清零法 杀进程
- ring3下的IAT HOOK
- Command Line Applications with Visual Studio 2008 and C++ Posted by omniplex in Errors
- Inline Hook 之(监视任意函数)
- SSDT Hook的妙用-对抗ring0 inline hook
- SSDT Hook的妙用-对抗ring0 inline hook