在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
EasyHook + win7 64位 LocalHook.GetProcAddress("Kernel32.dll", "CreateProcess") 报异常找不到method LocalHook.GetProcAddress("Kernel32.dll", "CreateProcessW") 可以hook到部分程序的启动
CreateProcess函数C#引用 [DllImport("Kernel32.dll", CharSet = CharSet.Ansi)] static extern bool CreateProcess( StringBuilder lpApplicationName, StringBuilder lpCommandLine, SECURITY_ATTRIBUTES lpProcessAttributes, SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, int dwCreationFlags, StringBuilder lpEnvironment, StringBuilder lpCurrentDirectory, ref STARTUPINFO lpStartupInfow, ref PROCESS_INFORMATION lpProcessInformation ); public class SECURITY_ATTRIBUTES { public int nLength; public string lpSecurityDescriptor; public bool bInheritHandle; } [StructLayout(LayoutKind.Sequential)] internal struct STARTUPINFO { internal int cb; [MarshalAs(UnmanagedType.LPTStr)] internal string lpReserved; [MarshalAs(UnmanagedType.LPTStr)] internal string lpDesktop; [MarshalAs(UnmanagedType.LPTStr)] internal string lpTitle; internal int dwX; internal int dwY; internal int dwXSize; internal int dwYSize; internal int dwXCountChars; internal int dwYCountChars; internal int dwFillAttribute; internal int dwFlags; internal short wShowWindow; internal short cbReserved2; internal IntPtr lpReserved2; internal IntPtr hStdInput; internal IntPtr hStdOutput; internal IntPtr hStdError; } [StructLayout(LayoutKind.Sequential)] internal struct PROCESS_INFORMATION { internal IntPtr hProcess; internal IntPtr hThread; internal int dwProcessId; internal int dwThreadId; }
AppLocker
有几种方法: 一.Ring3Hook: 可以写个驱动程序, 只需要在初始化代码中用PsSetCreateProcessNotifyRoutine注册一个回调函数就可以在接下去任何process创建时获得通知。 然后只要想办法通知ring3的前端程序就可以了。 如果想在ring3通过api hook实现, 那么需要至少hook所有已存在process的创建进程的api, 据我所知, 至少需要hook各进程内kernel32.dll中的CreateProcessInternalW和advapi32.dll中的CreateProcessWithLogonW,CreateProcessWithTokenW (也许还有漏掉的, 不过hook这几个api后普通程序的创建都能抓住了) 二.使用普通的HOOK,HOOK WH_SHELL消息.但是有遗漏的.只能HOOK到通过ShellExecute启动的程序.象QQ就HOOK不到. 三.做一个dll,在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows键下修改键值AppInit_DLLs,把你的dll及路径加上。每个程序启动后都会Load你的dll
HOOK CreateProcessInternalW这个没什么用,终究也就是你本进程而已。进r0,HOOK NtCreateProcess
NtCreateProcess 创建空白进程
CreateProcess 通过HookNtCreateSection 动态监控驱动sys、动态链接库dll、可执行文件exe加载
CreateProcessAsUser win7 win10 64 hook "advapi32.dll"下的 "CreateProcessAsUser" ,报异常找不到method
官方文档 msdn https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw
CreateProcess_创建进程函数——C# http://www.doc88.com/p-898572238360.html
XP时代,文件目录操作以一个个独立的API函数形式存在于kernel32.dll中,如CopyFile、CreateDirectory、DeleteFile等。WIN7之后,微软改了这一层的实现,改用IFileOperation囊括原有的API集。当然,这一信息来自baidu、msdn。然后就是确定IFileOperation的接口虚函数表。
Hook NtCreateProcess在用户态下是可以的,在内核态不行。
写个全局hook(dll),拦截程序的WM_CREATE消息,然后想怎么办看你了 如果你需要截获WM_CREATE消息,必需配合使用WH_CBT钩子。 http://www.microsoft.com/msj/0699/c/c0699.aspx
自己定义的消息不能跨进程发送,用RegisterWindowMessage注册自定义消息才行。
同上。WM_CREATE消息是Hook不到的,应该用WH_CBT,判断HCBT_CREATEWND。
自己定义的消息不能跨进程发送,用RegisterWindowMessage注册自定义消息才行。
WH_CBT
结帖率 100%
HOOK CreateProcessW例子 HOOK了CreateProcessW这个API,对进程的创建进行控制。 //VC-DLL #include <windows.h> #include <stdio.h> unsigned long LUW; char path[4096]; char title[128]; BOOL WINAPI MyCreateProcessW( LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ); HINSTANCE hInstance; int WINAPI DllMain (HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved) { unsigned char m; unsigned long i,t,s; //char tt[128]; LUW=(unsigned long)CreateProcessW; LUW+=5; sprintf(title,"%s","进程创建被取消!"); switch (fdwReason) { case DLL_PROCESS_ATTACH: hInstance=hInst; m=0xe9; s=(unsigned long)CreateProcessW; t=(unsigned long)MyCreateProcessW-s-5; WriteProcessMemory(GetCurrentProcess(),(void *)s,&m,1,&i); //sprintf(tt,"%d",i); //MessageBox(0,tt,tt,32); s++; WriteProcessMemory(GetCurrentProcess(),(void *)s,&t,4,&i); //sprintf(tt,"%d",i); //MessageBox(0,tt,tt,32); break; }; return TRUE; } BOOL WINAPI MyCreateProcessW( LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ){ sprintf(path,"%ws\r\n\r\n进程的创建被取消由于:\r\n\r\n -该文件位于不被信任的区域",lpApplicationName); if(check(path[0])){ MessageBox(0,path,title,16); return 0; } //MessageBox(0,"CreateProcess被拦截!",path,32); _asm{ pop edi pop esi pop ebx jmp LUW } } bool check(char d){ //位于G盘到z盘点程序都禁止运行,防u盘病毒。 char t; for(t='g';t<='z';t++) if(d==t) return false; for(t='G';t<='Z';t++) if(d==t) return false; return true; }
给kernel32.dll的CreateProcessInternalW下钩子,不能钩到由cmd启动的程序!为什么? 要注入到cmd
钩子不行就用Process控制
https://www.cnblogs.com/sofire/archive/2010/11/19/1881392.html
https://wenku.baidu.com/view/cb73e502cc17552707220896.html https://www.cnblogs.com/cdo/archive/2008/06/29/1232133.html
http://bbs.eyuyan.com/simple/?t220629.html 小试X64 inline HOOK,hook explorer.exe--->CreateProcessInternalW监视进程创建 https://blog.csdn.net/zwfgdlc/article/details/16918565
编译成DLL后,在运行里执行rundll32.exe X64Dll.dll,Setup,DLL会自动注入到explorer.exe进程.
windows创建进程的3种方式下各API调用层次https://my.oschina.net/u/1777508/blog/1795240
今天对创建进程的3种方式进行了跟踪: 调用api,createprocess createprocess-createprocessinternala-createprocessinternalw 调用api,shell: shellexecute- createprocessw-createprocessinternalw, 创建com方式(脚本病毒常用手法): createobject("wscript.shell").run- createprocessw-createprocessinternalw
Win10x64上HOOK创建进程函数CreateProcessInternalW已无效此问题已经解决了,原来是Unicode没有转换好的原因。
纯 .net DLL 注入并执行 - 通过CLR实现DllMainhttps://jingyan.baidu.com/article/20095761c1434acb0721b4bb.html
C# DLL注入技术https://blog.csdn.net/hyy829903/article/details/12272475
纯C#实现注入任意DLL(托管/非托管),无需额外DLL,AnyCPU编译支持x64/x86 win10/win8/win7/xphttps://blog.csdn.net/wwh1004/article/details/79190596
通用 C# DLL 注入器injector(注入dll不限)https://www.cnblogs.com/meyon/p/4009248.html
c#加载dll注入进程https://tieba.baidu.com/p/4942255052?red_tag=1538811474
ReactOS:
https://doxygen.reactos.org/d9/dd7/dll_2win32_2kernel32_2client_2proc_8c.html ReactOS 是开源、免费的 Windows NT 系列克隆操作系统,保持了与 Windows 的系统级兼容性。
https://www.cnblogs.com/vcerror/p/4289156.html
API Hook完全手册https://blog.csdn.net/kelsel/article/details/52758830
VB拦截windows删除文件(API HOOK)https://download.csdn.net/download/gouyue/3767083
win7及以上系统C++实现Hook explorer文件级监控复制、剪切和删除操作https://blog.csdn.net/BruceAYG/article/details/81456107
基于EasyHook实现监控explorer资源管理器文件复制、删除、剪切等操作https://blog.csdn.net/weixin_42011520/article/details/84193237
如何分析解决COM接口IFileOperation的hook去支持vista、win7、win8、win10 x86 x64系统https://blog.csdn.net/basketwill/article/details/52102560
EasyHook-重塑的WindowsAPI挂接https://www.orcode.com/article/DLLs_20129883.html
实例EasyHook试用https://my.oschina.net/propagator/blog/1546263
C# EasyHook MessageBox 示例(极简而全)
[.Net] C#使用easyHook笔记一
基于EasyHook实现监控explorer资源管理器文件复制、删除、剪切等操作
c++ win7及以上系统C++实现Hook explorer文件级监控复制、剪切和删除操作
如何分析解决COM接口IFileOperation的hook去支持vista、win7、win8、win10 x86 x64系统 https://blog.csdn.net/basketwill/article/details/52102560
小试X64 inline HOOK,hook explorer.exe--->CreateProcessInternalW监视进程创建
调试调用的什么api
Win7、win8、win10下实现精准截获Explorer拷贝行为 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论