<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Noz3001's Blog</title>
	<atom:link href="http://noz3001.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://noz3001.wordpress.com</link>
	<description>Tutorialz and Shiz</description>
	<lastBuildDate>Wed, 07 Oct 2009 13:16:03 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='noz3001.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/66d85d166de42e32a974d3b8c99dabaa?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Noz3001's Blog</title>
		<link>http://noz3001.wordpress.com</link>
	</image>
			<item>
		<title>WriteProcessMemory Examples</title>
		<link>http://noz3001.wordpress.com/2009/10/07/writeprocessmemory-examples/</link>
		<comments>http://noz3001.wordpress.com/2009/10/07/writeprocessmemory-examples/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 13:16:02 +0000</pubDate>
		<dc:creator>noz3001</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[beginner]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[memory edit]]></category>
		<category><![CDATA[speedhack]]></category>
		<category><![CDATA[star sonata]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[writeprocessmemory]]></category>

		<guid isPermaLink="false">http://noz3001.wordpress.com/?p=62</guid>
		<description><![CDATA[Why?
It&#8217;s time to put all the beginner tutorials back onto my blog. I&#8217;ll start with a WriteProcessMemory tutorial (the basics of memory editing). WriteProcessMemory is useful when you don&#8217;t want to be loaded into the memory space of the target program.
First of all you are going to need to know the address of the memory [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=noz3001.wordpress.com&blog=843566&post=62&subd=noz3001&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>Why?</strong><br />
It&#8217;s time to put all the beginner tutorials back onto my blog. I&#8217;ll start with a WriteProcessMemory tutorial (the basics of memory editing). WriteProcessMemory is useful when you don&#8217;t want to be loaded into the memory space of the target program.</p>
<p>First of all you are going to need to know the address of the memory you want to edit. Use Cheat Engine or some similar program (I recommend Cheat Engine, obviously) to find it.</p>
<p><span id="more-62"></span><br />
In this example, I am going to write to a game called Star Sonata and enable a speed hack. You don&#8217;t have to get this game, you can use any game but make sure you change the addresses to the ones you find.</p>
<p><strong>The Code</strong><br />
The code formatting on here doesn&#8217;t work very well so all of my code examples are going to be stored at codepad.org.</p>
<p>There&#8217;s not much to explain for this code so I&#8217;ve commented most lines in the source. Should make it easy to understand.<br />
<strong>Source: </strong> <a href="http://codepad.org/lcmqdOQX">View</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/noz3001.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/noz3001.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/noz3001.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/noz3001.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/noz3001.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/noz3001.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/noz3001.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/noz3001.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/noz3001.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/noz3001.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=noz3001.wordpress.com&blog=843566&post=62&subd=noz3001&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://noz3001.wordpress.com/2009/10/07/writeprocessmemory-examples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15ef3253eaeccde12340a8c52183009e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">noz3001</media:title>
		</media:content>
	</item>
		<item>
		<title>T3xt 2 l33t</title>
		<link>http://noz3001.wordpress.com/2009/09/05/t3xt-2-l33t/</link>
		<comments>http://noz3001.wordpress.com/2009/09/05/t3xt-2-l33t/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 23:28:28 +0000</pubDate>
		<dc:creator>noz3001</dc:creator>
				<category><![CDATA[Win32 C++]]></category>
		<category><![CDATA[1337]]></category>
		<category><![CDATA[leet]]></category>
		<category><![CDATA[text]]></category>

		<guid isPermaLink="false">http://noz3001.wordpress.com/?p=57</guid>
		<description><![CDATA[Lovely program to convert text strings into zomg 1337.


LeetConverter.h
#include 
BOOL InitInstance(
    HINSTANCE, INT
);
LRESULT CALLBACK WndProc(
    HWND, UINT, WPARAM, LPARAM
);
ATOM MyRegisterClass(
    HINSTANCE
);
BOOL APIENTRY WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    INT nCmdShow
);
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=noz3001.wordpress.com&blog=843566&post=57&subd=noz3001&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Lovely program to convert text strings into zomg 1337.</p>
<p><img src="http://i30.tinypic.com/29uy51d.png" alt="" /><br />
<span id="more-57"></span><br />
<strong>LeetConverter.h</strong><br />
<code>#include </p>
<p>BOOL InitInstance(<br />
    HINSTANCE, INT<br />
);</p>
<p>LRESULT CALLBACK WndProc(<br />
    HWND, UINT, WPARAM, LPARAM<br />
);</p>
<p>ATOM MyRegisterClass(<br />
    HINSTANCE<br />
);</p>
<p>BOOL APIENTRY WinMain(<br />
    HINSTANCE hInstance,<br />
    HINSTANCE hPrevInstance,<br />
    LPSTR lpCmdLine,<br />
    INT nCmdShow<br />
);</p>
<p>#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")<br />
#pragma comment (lib, "comctl32.lib")</p>
<p>HWND hWnd;<br />
HWND hControls[3];<br />
HINSTANCE hInst;</p>
<p>LPCWSTR szWindowClass = TEXT("Leet_MainClass");<br />
LPCWSTR szWindowTitle = TEXT("1337 Converter");</p>
<p>// Control IDs<br />
#define IDC_LEET            1001<br />
#define IDC_CONV            1002<br />
#define IDC_ABOUT            1003<br />
#define IDC_CLEAR            1004</p>
<p>//////////////////////////////////////////<br />
// Convert 1337 Function (Changed a bit //<br />
//////////////////////////////////////////<br />
const std::string a = "abcdefghijklmnopqrstuvwxyz";<br />
const std::string b[] = { "4", "ß", "(", "|)", "3", "Ph", "9", "|-|", "1",<br />
                          "j", "|&lt;&quot;, &quot;`/&quot;, &quot;2&quot; };</p>
<p>void replace1337(std::string&amp; c)<br />
{<br />
    std::string t;<br />
    for(int i = 0; i &lt; c.length(); i++) {<br />
        for(int j = 0; j &lt; a.length(); j++) {<br />
            if(tolower(c.at(i)) == a.at(j))    {<br />
                t.append(b[j]);<br />
                break;<br />
            }<br />
        }</p>
<p>        switch (c.at(i)) { // Keep escapes<br />
                case &#39; &#39;:<br />
                    t.append(1, &#39; &#39;);<br />
                    break;</p>
<p>                case &#39;\n&#39;:<br />
                    t.append(&quot;\n&quot;);<br />
                    break;</p>
<p>                case &#39;\r&#39;:<br />
                    t.append(&quot;\r&quot;);<br />
                    break;</p>
<p>                //case &#39;\t&#39;:<br />
                    //t.append(&quot;\t&quot;);<br />
                    //break;<br />
            }<br />
    }<br />
    c=t;<br />
}</code></p>
<p><strong>LeetConverter.cpp</strong><br />
<code>#include<br />
#include<br />
#include </p>
<p>#include "LeetConverter.h"</p>
<p>BOOL APIENTRY WinMain(<br />
    HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)<br />
{<br />
    UNREFERENCED_PARAMETER(hPrevInstance);<br />
    UNREFERENCED_PARAMETER(lpCmdLine);</p>
<p>    MSG msg;<br />
    INITCOMMONCONTROLSEX InitCtrls;</p>
<p>    InitCtrls.dwICC = ICC_STANDARD_CLASSES;<br />
    InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);<br />
    InitCommonControlsEx(&amp;InitCtrls);</p>
<p>    hInst = hInstance; // Store global copy<br />
    if (!MyRegisterClass(hInst)) {<br />
        return GetLastError();<br />
    }</p>
<p>    if (!InitInstance(hInst, nCmdShow)) {<br />
        return GetLastError();<br />
    }</p>
<p>    while (GetMessage(&amp;msg, NULL, 0, 0)) {<br />
            TranslateMessage(&amp;msg);<br />
            DispatchMessage(&amp;msg);<br />
    }</p>
<p>    return (BOOL)msg.wParam;<br />
}</p>
<p>BOOL InitInstance(<br />
    HINSTANCE hInstance, INT nCmdShow)<br />
{<br />
    DWORD dwMainStyle = WS_CAPTION|WS_BORDER|WS_VISIBLE|WS_MINIMIZEBOX|WS_SYSMENU;</p>
<p>    hWnd = CreateWindow(szWindowClass, szWindowTitle, dwMainStyle, CW_USEDEFAULT,<br />
                        CW_USEDEFAULT, 323, 150, NULL, NULL, hInstance, NULL);</p>
<p>    if (!hWnd) {<br />
        return FALSE;<br />
    }</p>
<p>    ShowWindow(hWnd, nCmdShow);<br />
    UpdateWindow(hWnd);</p>
<p>    return TRUE;<br />
}</p>
<p>ATOM MyRegisterClass(<br />
    HINSTANCE hInstance)<br />
{<br />
    WNDCLASSEX wcex;</p>
<p>    wcex.cbSize = sizeof(WNDCLASSEX);</p>
<p>    wcex.style            = CS_HREDRAW | CS_VREDRAW;<br />
    wcex.lpfnWndProc    = WndProc;<br />
    wcex.cbClsExtra        = 0;<br />
    wcex.cbWndExtra        = 0;<br />
    wcex.hInstance        = hInstance;<br />
    wcex.hIcon            = LoadIcon(hInstance, IDI_SHIELD);<br />
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);<br />
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW);<br />
    wcex.lpszClassName    = szWindowClass;<br />
    wcex.hIconSm        = LoadIcon(wcex.hInstance, IDI_SHIELD);<br />
    wcex.lpszMenuName    = NULL;</p>
<p>    if(!RegisterClassEx(&amp;wcex))<br />
        return FALSE;<br />
    return TRUE;<br />
}</p>
<p>LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)<br />
{<br />
    static INT wmId, wmEvent;<br />
    static PAINTSTRUCT ps;<br />
    static HDC hdc;<br />
    static HFONT hDefFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);<br />
    static char szBuf[1024];<br />
    static std::string s;</p>
<p>    #define dwDefault WS_VISIBLE|WS_CHILD</p>
<p>    switch (message)<br />
    {<br />
        case WM_CREATE:<br />
            hControls[0] = CreateWindow(TEXT("EDIT"), NULL, dwDefault|ES_MULTILINE|WS_BORDER|ES_AUTOVSCROLL|WS_VSCROLL, 10, 10, 305, 80, hWnd, (HMENU)IDC_LEET, hInst, NULL);<br />
            hControls[1] = CreateWindow(TEXT("BUTTON"), TEXT("Convert"), dwDefault, 10, 93, 81, 23, hWnd, (HMENU)IDC_CONV, hInst, NULL);<br />
            hControls[2] = CreateWindow(TEXT("BUTTON"), TEXT("About"), dwDefault, 227, 93, 71, 23, hWnd, (HMENU)IDC_ABOUT, hInst, NULL);<br />
            hControls[3] = CreateWindow(TEXT("BUTTON"), TEXT("Clear"), dwDefault, 90, 93, 81, 23, hWnd, (HMENU)IDC_CLEAR, hInst, NULL);</p>
<p>            SendMessage(hControls[0], WM_SETFONT, (WPARAM)hDefFont, MAKELPARAM(TRUE, 0));<br />
            SendMessage(hControls[1], WM_SETFONT, (WPARAM)hDefFont, MAKELPARAM(TRUE, 0));<br />
            SendMessage(hControls[2], WM_SETFONT, (WPARAM)hDefFont, MAKELPARAM(TRUE, 0));<br />
            SendMessage(hControls[3], WM_SETFONT, (WPARAM)hDefFont, MAKELPARAM(TRUE, 0));<br />
        break;</p>
<p>        case WM_COMMAND:<br />
            wmId    = LOWORD(wParam);<br />
            wmEvent = HIWORD(wParam);<br />
            // Parse the selections:<br />
            switch (wmId)<br />
            {<br />
                case IDC_CONV:<br />
                    GetWindowTextA(hControls[0], szBuf, 1024);<br />
                    s.assign(szBuf, strlen(szBuf));<br />
                    replace1337(s);<br />
                    SetWindowTextA(hControls[0], s.c_str());<br />
                    SetFocus(hControls[0]);<br />
                break;</p>
<p>                case IDC_ABOUT:<br />
                    MessageBox(NULL, TEXT("Much love from Noz3001 &lt;3&quot;), TEXT(&quot;&lt;3&quot;), MB_ICONINFORMATION);<br />
                    SetFocus(hControls[0]);<br />
                break;</p>
<p>                case IDC_CLEAR:<br />
                    SetWindowText(hControls[0], NULL);<br />
                    SetFocus(hControls[0]);<br />
                    break;</p>
<p>                default: return DefWindowProc(hWnd, message, wParam, lParam);<br />
            }<br />
            break;</p>
<p>        case WM_PAINT:<br />
            hdc = BeginPaint(hWnd, &amp;ps);</p>
<p>            EndPaint(hWnd, &amp;ps);<br />
            break;</p>
<p>        case WM_DESTROY:<br />
            PostQuitMessage(0);<br />
            break;</p>
<p>        case WM_SETFOCUS:<br />
            SetFocus(hControls[0]);<br />
            break;</p>
<p>        default: return DefWindowProc(hWnd, message, wParam, lParam);<br />
    }<br />
    return 0;<br />
}</code></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/noz3001.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/noz3001.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/noz3001.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/noz3001.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/noz3001.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/noz3001.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/noz3001.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/noz3001.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/noz3001.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/noz3001.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=noz3001.wordpress.com&blog=843566&post=57&subd=noz3001&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://noz3001.wordpress.com/2009/09/05/t3xt-2-l33t/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15ef3253eaeccde12340a8c52183009e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">noz3001</media:title>
		</media:content>

		<media:content url="http://i30.tinypic.com/29uy51d.png" medium="image" />
	</item>
		<item>
		<title>Beginner Driver Programming</title>
		<link>http://noz3001.wordpress.com/2007/05/16/beginner-driver-programming/</link>
		<comments>http://noz3001.wordpress.com/2007/05/16/beginner-driver-programming/#comments</comments>
		<pubDate>Wed, 16 May 2007 22:38:06 +0000</pubDate>
		<dc:creator>noz3001</dc:creator>
				<category><![CDATA[Win32 C++]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[Kernelmode]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://noz3001.wordpress.com/2007/05/16/beginner-driver-programming/</guid>
		<description><![CDATA[Haha, finally time to write another blog. I&#8217;ve been having too much fun messing around in kernel mode and getting random BSOD&#8217;s because I messed something up.
 Anyway, this blog will teach you the very basics of writing kernel mode drivers for windows 2000 / XP.
Note: Kernel-Mode Drivers will NOT work on Windows Vista because [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=noz3001.wordpress.com&blog=843566&post=24&subd=noz3001&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Haha, finally time to write another blog. I&#8217;ve been having too much fun messing around in kernel mode and getting random BSOD&#8217;s because I messed something up.</p>
<p> Anyway, this blog will teach you the very basics of writing kernel mode drivers for windows 2000 / XP.</p>
<p><strong>Note: Kernel-Mode Drivers will NOT work on Windows Vista because of it&#8217;s security!</strong></p>
<p>//=====================<br />
// Writing a driver for windows<br />
//=====================<br />
<span id="more-24"></span></p>
<ul><strong>Tools Needed:</strong></ul>
<p>Windows Driver Development Kit: <a href="http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso">Download</a><br />
Driver Tools: <a href="http://forum.cheatengine.org/files/driver_tools_741.rar">Download</a><br />
A Text Editor (For writing the source code)<br />
Medium level C knowledge</p>
<ul><strong>Win DDK</strong></ul>
<p> Before you start creating drivers you will need to understand the DDK &#8211; What it is and how to use it.<br />
By now I hope you have already installed the DDK and have it ready for use.</p>
<p> The Driver Development Kit coontains all the header files needed to compile your kernel driver and it also compiles your source. For example: In a normal Windows Usermode application you would be a custom to including windows.h as a header file. In kernel mode this is replaced by ntddk.h. The kernel mode &#8220;version&#8221; of windows.h.<br />
 ntddk.h is where most kernel mode API are declared.</p>
<p>Later, after you learn the skeleton of a driver source, I will explain how to compile a driver with the DDK.</p>
<ul><strong>The Source</strong></ul>
<p>Now I am going to show you how a basic driver should look. Think of this as the drivr version of the &#8220;hello world&#8221; program. Infact, I think we should make our driver print hello world!</p>
<p> Now, as I stated in the DDK explanation, the header file ntddk.h MUST be included at the top of your source:</p>
<p><code>#include "ntddk.h"</code></p>
<p> If you have already programmed for the console in C / C++, i&#8217;ll assume that you know about the int main() function. Well the driver equivalent to that is DriverEntry:</p>
<p> <code>NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);</code></p>
<p>Treat this exaclty as you would int main(). But as you can see, DriverEntry is type NTSTATUS which means it will return NTSTATUS. So in the body of DriverEntry we will put:</p>
<p><code>return STATUS_SUCCESS;</code></p>
<p>And this will tell the Operating system that the function succeeded.</p>
<p>Here is an example of what your driver source should look like at the moment:</p>
<p><code><br />
#include "ntddk.h"</p>
<p>NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING theRegistryPath )<br />
{</p>
<p>    return STATUS_SUCCESS;<br />
}<br />
</code></p>
<p>It might seem too simple to be a kernel mode driver but this will compile and can be loaded successfully. </p>
<ul><strong>DbgPrint(&#8220;Noz3001&#8243;);</strong></ul>
<p> If you have written C / C++ programs in the past, you might have found yourself in a situation where you need to print information to the screen for debugging or other purposes. If you use C, you will probably be familiar with using the printf() function to print information.<br />
 There is an equivalent function in kernel mode. It takes the same paramaters and is just as easy to call! The only problem is that viewing the output is not as simple as using printf. This function is <strong>DbgPrint();</strong>.</p>
<p> We are going to make our driver print &#8220;hello world&#8221; when it&#8217;s run by using DbgPrint. An example of doing so is shown below:</p>
<p><code>DbgPrint("Hello World!");</code></p>
<p> If you place this code in the DriverEntry function, the driver will print our string when it is run. The only problem is that we have nothing to view the string with! Don&#8217;t worry, thats why I made you download the &#8220;driver tools&#8221; at the beginning og this article. Extract them to your computer using WinRAR and open the file called &#8220;Dbgview&#8221;.</p>
<p>It should look like this:<br />
<a href='http://noz3001.files.wordpress.com/2007/05/dbgviewmain.jpg' title='DbgView Main Window'><img src='/files/2007/05/dbgviewmain.thumbnail.jpg' alt='DbgView Main Window' /></a></p>
<p> This program catches all the strings &#8220;DbgPrinted&#8221; and display them to you! This is how you are going to view your hello world string later on.</p>
<p> Now add your DbgPrint() code to your source. My source looks like this:</p>
<p><code><br />
#include "ntddk.h"</p>
<p>NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING theRegistryPath )<br />
{</p>
<p>    DbgPrint("Hello World!");</p>
<p>    DriverObject-&gt;DriverUnload; // Unload the driver.<br />
    return STATUS_SUCCESS;<br />
}<br />
</code></p>
<p>Note the line DriverObject-&gt;DriverUnload; // Unload the driver. You always need to unload your driver so the user doesn&#8217;t have to restart to unload it!</p>
<p><ul><strong>Compiling your first Driver</strong></ul>
<p>This is the fun part!! Getting to use the DDK!!<br />
 Firsly, I hope you have created your source file on the same drive as you installed the DDK! If not, copy it over.</p>
<p><strong>Note: Make sure the folder / source name have NO spaces in them!</strong></p>
<p>There are two more small files you need to create before the DDK will compile your source. SOURCES and MAKEFILE.<br />
Both have NO file extension and MAKEFILE is always the same.</p>
<p><u><strong>MAKEFILE</strong></u><br />
!INCLUDE $(NTMAKEENV)\makefile.def</p>
<p><u><strong>SOURCES</strong></u><br />
TARGETNAME=Noz3001_Driver</p>
<p>TARGETPATH=Release</p>
<p>TARGETTYPE=DRIVER</p>
<p>SOURCES=DriverMain.c</p>
<p>In SOURCES, TARGETNAME is the filename of the compiled driver. TARGETPATH is the folder where the driver will be put. TARGETTYPE is pretty self-explanatory and SOURCES is your source file.</p>
<p> Ok now we can open the DDK compiler. Click Start-&gt;Development Kits and look for &#8220;Windows XP Free Build Environment&#8221;<br />
once here type &#8220;cd..&#8221; and press enter until the current directory cant get any lower. Eg &#8220;C:/&gt;&#8221;.</p>
<p> Now type CD again and after it put the full path to the folder where your 3 files are. Now type &#8220;build&#8221; (without the &#8221; &#8217;s) and press enter. You should see something like this:</p>
<p><a href='http://noz3001.files.wordpress.com/2007/05/ddkbuildsuccess.jpg' title='DDK “Build”'><img src='http://noz3001.files.wordpress.com/2007/05/ddkbuildsuccess.jpg' alt='DDK “Build”' /></a></p>
<p> <strong>Note: If you get any errors, review your source and try to find what you did wrong.</strong></p>
<p>If your DDK screen looks like mine, CONGRATULATIONS! You just created your first Kernel-Mode driver!<br />
But wait, thats not all! You still have to make sure it works.</p>
<p> Make sure you still have DbgView open so ou can see the result of your DbgPrint. Now it&#8217;s time o use the other program i included in my &#8220;driver tools&#8221; file, &#8220;INSTDRV&#8221;. This program can load your driver for you! It saves you a lot of time when you are still testing your driver so keep it handy!</p>
<p> Once opened it will look like this:<br />
<a href='http://noz3001.files.wordpress.com/2007/05/instdrv1.jpg' title='InstDrvr'><img src='/files/2007/05/instdrv1.thumbnail.jpg' alt='InstDrvr' /></a></p>
<p> Now enter the full path to your driver in the pathname text box and click install. Once the status says &#8220;Operation successful&#8221;, click the start button to start your driver.</p>
<p> Now go back to DbgView. If your driver has worked you will see something like this:<br />
 <a href='http://noz3001.files.wordpress.com/2007/05/dbgviewhelloworld.jpg' title='dbgviewhelloworld.jpg'><img src='http://noz3001.files.wordpress.com/2007/05/dbgviewhelloworld.jpg' alt='dbgviewhelloworld.jpg' /></a></p>
<p> WELL DONE!! You just created a working kernel mode driver AND used a kernel mode function!</p>
<p> I think you should give yourself a pat on the back!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/noz3001.wordpress.com/24/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/noz3001.wordpress.com/24/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/noz3001.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/noz3001.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/noz3001.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/noz3001.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/noz3001.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/noz3001.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/noz3001.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/noz3001.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/noz3001.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/noz3001.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=noz3001.wordpress.com&blog=843566&post=24&subd=noz3001&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://noz3001.wordpress.com/2007/05/16/beginner-driver-programming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15ef3253eaeccde12340a8c52183009e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">noz3001</media:title>
		</media:content>

		<media:content url="/files/2007/05/dbgviewmain.thumbnail.jpg" medium="image">
			<media:title type="html">DbgView Main Window</media:title>
		</media:content>

		<media:content url="http://noz3001.files.wordpress.com/2007/05/ddkbuildsuccess.jpg" medium="image">
			<media:title type="html">DDK “Build”</media:title>
		</media:content>

		<media:content url="/files/2007/05/instdrv1.thumbnail.jpg" medium="image">
			<media:title type="html">InstDrvr</media:title>
		</media:content>

		<media:content url="http://noz3001.files.wordpress.com/2007/05/dbgviewhelloworld.jpg" medium="image">
			<media:title type="html">dbgviewhelloworld.jpg</media:title>
		</media:content>
	</item>
	</channel>
</rss>