⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 783.html

📁 里面收集的是发表在www.xfocus.org上的文章
💻 HTML
📖 第 1 页 / 共 5 页
字号:
&nbsp;&nbsp;&nbsp;&nbsp;_asm<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//dissable interrupt<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;EAX, CR0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//move CR0 register into EAX<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND EAX, NOT 10000H //disable WP bit <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;CR0, EAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//write register back<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;(NTCREATEPROCESSEX)(*(((PServiceDescriptorTableEntry)KeServiceDescriptorTable)-&gt;ServiceTableBase + 0x32))=&nbsp;&nbsp;NewNtCreateProcessEx;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;_asm <br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;EAX, CR0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//move CR0 register into EAX<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OR&nbsp;&nbsp;&nbsp;&nbsp;EAX, 10000H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//enable WP bit &nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;CR0, EAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//write register back&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//enable interrupt<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return STATUS_SUCCESS;<br />
}<br />
<br />
这样很不爽,每次都要这样看索引号,问了SOBEIT,可以通过从NTDLL中这样获取服务索引号:<br />
来自rookkit:<br />
<br />
#include &lt;windows.h&gt;<br />
#include &lt;stdio.h&gt;<br />
<br />
BOOL GetId( char *FuncName, ULONG *FunctionID )<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//get the function&#39;s address<br />
&nbsp;&nbsp;&nbsp;&nbsp;PBYTE Function = (PBYTE)GetProcAddress( GetModuleHandle( &quot;ntdll.dll&quot; ), FuncName );<br />
&nbsp;&nbsp;&nbsp;&nbsp;/*<br />
&nbsp;&nbsp;&nbsp;&nbsp;do some sanity checks, <br />
&nbsp;&nbsp;&nbsp;&nbsp;make sure this function <br />
&nbsp;&nbsp;&nbsp;&nbsp;has a corresponding kernel <br />
&nbsp;&nbsp;&nbsp;&nbsp;level function<br />
&nbsp;&nbsp;&nbsp;&nbsp;*/<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;*FunctionID = 0;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;//func not found...<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ( Function == NULL )<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;/*<br />
&nbsp;&nbsp;&nbsp;&nbsp;77F5B438&nbsp;&nbsp; B8 00000000&nbsp;&nbsp;&nbsp;&nbsp;MOV EAX, _FUNCTION_ID_<br />
&nbsp;&nbsp;&nbsp;&nbsp;77F5B43D&nbsp;&nbsp; BA 0003FE7F&nbsp;&nbsp;&nbsp;&nbsp;MOV EDX,7FFE0300<br />
&nbsp;&nbsp;&nbsp;&nbsp;77F5B442&nbsp;&nbsp; FFD2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CALL EDX<br />
&nbsp;&nbsp;&nbsp;&nbsp;77F5B444&nbsp;&nbsp; C2 1800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETN XX<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;//mov eax<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ( *Function != 0xB8 )<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;/*<br />
&nbsp;&nbsp;&nbsp;&nbsp;since the address of<br />
&nbsp;&nbsp;&nbsp;&nbsp;the function which <br />
&nbsp;&nbsp;&nbsp;&nbsp;actually makes the call <br />
&nbsp;&nbsp;&nbsp;&nbsp;(SYSCALL) may change, we just<br />
&nbsp;&nbsp;&nbsp;&nbsp;check for mov edx<br />
&nbsp;&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ( *(Function + 5) != 0xBA )<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;//call edx<br />
&nbsp;&nbsp;&nbsp;&nbsp;/*if ( *(PWORD)(Function + 10) != 0xD2FF )<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;//retn<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ( *(Function + 12) != 0xC2 )<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}*/<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;*FunctionID = *(PDWORD)(Function + 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<br />
}<br />
<br />
int main(int argc, char* argv[])<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;ULONG Id;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf( &quot;function name: NtCreateProcessEx\n&quot; );<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;GetId( &quot;NtCreateProcessEx&quot;, &amp;Id );<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf( &quot;function id: %08X\n&quot;, Id );<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
}<br />
///////////////////////////////////////////////////////////////////////<br />
<br />
这样也不爽,要从用户态传到驱动层不方便,最后,用这个代码:<br />
<br />
#include &quot;ntddk.h&quot;<br />
#include &quot;stdarg.h&quot;<br />
#include &quot;stdio.h&quot;<br />
#include &quot;ntiologc.h&quot;<br />
#include &quot;ntimage.h&quot;<br />
<br />
<br />
#define DWORD unsigned long<br />
#define WORD unsigned short<br />
#define BOOL unsigned long<br />
#define BYTE unsigned char<br />
<br />
#define SEC_IMAGE&nbsp;&nbsp;&nbsp;&nbsp;0x01000000<br />
<br />
typedef struct _SECTION_IMAGE_INFORMATION {<br />
PVOID EntryPoint; <br />

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -