
安全(ring3)
花熊
毕业于西安交通大学
展开
-
0.ring3-SetWinEventHook和SetWindowsHookEx
SetWinEventHook和SetWindowsHookEx都可以指定钩子函数(hook function)来截取别的进程中的消息1.SetWindowsHookEx有两种钩子函数,一种是全局钩子(global hook),另一种是线程钩子(thread hook)。SetWindowsHookEx 和SetWinEventHook两种方法截取的消息的类型不一样。SetWind原创 2010-11-25 10:43:00 · 2358 阅读 · 0 评论 -
12.ring3-反调试-IsDebuggerPresent
依赖于API的反调试这个函数会看PEB中的BeingDebugged是否为0,不为0就表示无调试器,否则表示有调试器.注意的是以前代码都会对这个函数首字节是否为0x64作判断,但在win7下,需要对应kernelBase中的IsDebuggerPresent,而不是kernel32中的IsDebuggerPresent//使用IsDebuggerPresent函数检测DbgToolTy原创 2012-09-19 15:14:50 · 5703 阅读 · 0 评论 -
13.ring3-反调试-CheckRemoteDebuggerPresent(ProcessDebugPort)
CheckRemoteDebuggerPresent这个API可以检测是否有调试器的存在,而且这个和PEB里面的BeingDebugged无关了。看一下CheckRemoteDebuggerPresent的声明: __in HANDLE hProcess, __in_out PBOOL pbDebuggerPresent);第一个参数是进程句柄,第原创 2012-09-19 16:10:26 · 7308 阅读 · 1 评论 -
14.ring3-hook-WH_KEYBOARD和WH_KEYBOARD_LL的区别
转个问答:q:what is the difference between the working of two ? For WH_KEYBOARD_LLi read that it Installs a hook procedure that monitors low-level keyboard input events. What is meant bylow-level key原创 2012-09-21 11:02:02 · 8526 阅读 · 0 评论 -
15.ring3-反调试小结
1.IsDebuggerPresent 检测是否在函数头有普通断点,或是否被挂钩2.CheckRemoteDebuggerPresent(ProcessDebugPort)3.NtGlobalFlags,测试发现直接运行工程会提示有调试器,windbg初始附加运行提示有调试器,但windbg中间附加不会提示有调试器,测试失败,但可用.0:000> dt _PEB -y NtGlobal原创 2012-10-13 11:44:30 · 2792 阅读 · 0 评论 -
16.ring3-性能测试工具perfmon的使用方式
为方便收集御龙在天的内存过大状态,使用perfmon记录以下为win7系统1.开始中运行perfmon.exe打开性能测试器2.右键用户定义,选择新建--->数据收集器名字可以改成hgy选择从模板创建,点击下一步点击完成会出现以下界面:右键Performance Counter选择属性:把性能计数计器的项清空,日志格式:逗号分隔 示例间隔选5原创 2012-11-09 12:46:43 · 1151 阅读 · 0 评论 -
17.ring3-设置默认调试器
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug原创 2012-12-02 12:17:24 · 860 阅读 · 0 评论 -
18.ring3-hook-得到线程入口地址的方式-线程创建前kill线程(随手代码)
要获取入口地址,可以用Native API: NtQueryInformationThread,以ThreadQuerySetWin32StartAddress为参数具体代码:.h:#pragma oncetypedef LONG NTSTATUS;typedef NTSTATUS (WINAPI *NTQUERYINFORMATIONTHREAD)( HANDLE Thread原创 2013-01-13 22:48:40 · 8627 阅读 · 3 评论 -
19.ring3-hook-GetThreadContext注意点(获取threadcontext错误点)
http://msdn.microsoft.com/zh-cn/subscriptions/ms679362(v=vs.85).aspx上比较详细说明,注意两点:1.You cannot get a valid context for a running thread. Use the SuspendThread function to suspend the thread bef原创 2013-10-18 13:27:35 · 3926 阅读 · 0 评论 -
11.ring3-APC注入
原理:往线程APC队列添加APC,系统会产生一个软中断。在线程下一次被调度的时候,就会执行APC函数,APC有两种形式,由系统产生的APC称为内核模式APC,由应用程序产生的APC被称为用户模式APC。每个线程都拥有自己的APC队列。应用程序可以使用函数把APC添加到指定线程的APC队列,函数定义如下:DWORD WINAPI QueueUserAPC( __in原创 2012-08-16 09:48:17 · 1711 阅读 · 0 评论 -
10.ring3-USER32!__ClientLoadLibrary定位.
保护软件一般都直接用新的函数指针替换CallBack表中__ClientLoadLibrary对应的位置在Windows系统中,提供了几种方式从R0调用位于R3的函数,其中一种方式是KeUserModeCallBack,此函数流程如下:nt!KeUserModeCallback->nt!KiCallUserMode->nt!KiServiceExit->ntdll!KiUserCall原创 2012-08-11 10:19:12 · 3492 阅读 · 0 评论 -
9.ring3-NtMapViewOfSection注入
新的注入方式:利用一个未公开函数NtMapViewOfSection在远程进程地址空间写入代码,并且用一种新的技术在远程进程中执行它,这种技术完全工作在用户模式下,并且不需要特殊的条件比如像管理员权限或者之类的要求#define _WIN32_WINNT 0x0400#include typedef LONG NTSTATUS, *PNTSTATUS;#define NT_SU原创 2012-07-29 20:59:34 · 11445 阅读 · 1 评论 -
1.ring3-windows hook机制详解
WINDOWS 的消息机制Windows 系统是以消息处理为其控制机制,系统通过消息为窗口过程( windows procedure)传递输入。系统和应用两者都可以产生消息。Windows 的消息处理机制为了能在应用程序中监控系统的各种事件消息,提供了挂接各种回调函数(HOOK)的功能。可以挂接多个反调函数构成一个挂接函数链。系统产生的各种消息首先被送到各种挂接函数,挂接函数根据各自的原创 2011-05-28 11:41:00 · 1892 阅读 · 0 评论 -
2.ring3-WH_CALLWNDPROC拦截不了键鼠消息
WH_CALLWNDPROC钩子监视SendMessage消息的传递,不管是系统内部调用的SendMessage()函数还是用户进程中调用的SendMessage()函数。 SendMessage()把消息直接交给窗口过程WndProc()来处理,WndProc()处理完消息后SendMessage()函数才返回(return resultValue;). 如果设置了WH_CALLWN原创 2011-05-30 21:21:00 · 2119 阅读 · 0 评论 -
3.ring3-hook的2种基础方式(SetWindowsHookEx、CreateRemoteThread、)
SetWindowsHookEx 1.在成功调用 SetWindowsHookEx 后,系统自动映射 DLL 到钩子作用的线程地址空间,但不会立即发生映射,因为 Windows 钩子都是消息,DLL 在消息事件发生前并没有产生实际的映射。2.为了强制进行映射,在调用 SetWindowsHookEx 之后马上发送一个事件到相关的线程。SendMessage(hWnd, WM_HOO原创 2012-02-08 20:37:57 · 1836 阅读 · 0 评论 -
4.ring0-API拦截方法一:PE简介
自己的知识分享文章,整理到博客上 ---------hgy notes.一.PE简介PE全名Portable Executable File Format(可移植的执行体),是目前window主流可执行文件格式, 是一种通用于所有window平台和所有CPU上的文件格式二.PE文件的定义PE文件的类型定义集中在WinNT.h这个类中,打开WinNT.h,再搜索Image Forma原创 2012-05-17 17:23:11 · 3478 阅读 · 1 评论 -
5.ring3-PEID详细用法
PEiD能检测大多数编译语言.、病毒和加密的壳,它主要利用查特征串搜索来完成识别工作的,各种开发语言都有固定的启动代码部分,利用这点可识别是何种语言编译的,被加壳程序处理过的程序,在壳里会留下相关加壳软件的信息,利用这点就可识别是保种壳所加密的,它提供了一个扩展接口文件userdb.txt ,用启可以自定义一些特征码,这样可以识别出新的文件类型,签名的制作可以用插件Add Signature来原创 2012-07-05 14:33:03 · 4725 阅读 · 2 评论 -
6.ring3-ImportREC重建输入表
1.目标文件已完全被Dump,另存为一个文件2.目标文件必须正在运行中3.事先找到目标程序真正的入口(OEP)或IAT的偏移与大小 以加壳RebPE.exe为例,首先OD加载:调试到00413001,设置硬件断点hr espF9断下来,单步调到OEP处:这时启用LoadPE工具,找到对应的进程,右键先执行"correct ImageSize”,再执行"dump原创 2012-07-10 13:51:16 · 4356 阅读 · 0 评论 -
7.ring3-DLL劫持技术详解(lpk.dll)
背景知识https://support.microsoft.com/en-us/kb/164501中记录了除了window的搜索dll顺序要看中文的兄弟可以看:https://support.microsoft.com/zh-cn/kb/164501我们当然主要关注32位的dll对于 32 位 Dll 在找到 KnownDLLs 注册表项:HKEY_LOCAL_MA原创 2012-07-29 16:19:05 · 14440 阅读 · 0 评论 -
8.ring3-破坏knowndlls反劫持保护
KnownDlls必须是在系统目录中,并且是在系统启动的时候,从注册表读取KnownDlls列表。之后,如果加载这个dll,首先搜索系统目录,其次搜索当前目录。系统自带KnownDlls,读取注册表里的dll,就不管其他的dll了 knowndlls,顾名思义,是指系统目录默认加载的DLL,现在病毒伪装的马甲DLL置于文件启动目录之下伺机启动早已不是什么有创意的做法。应用程序启动前优先加载原创 2012-07-29 16:51:23 · 9942 阅读 · 0 评论 -
20.ring3-去掉exe的重定位
1.OptionalHeader.DllCharacteristics = wNewDllCharacteristics;用CFF打开,如果存在DLL can move这个选项,去掉即可2.Relocation Directory RVA/Size 置为0去掉了exe的重定位原创 2014-01-08 16:59:13 · 1660 阅读 · 0 评论