<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://www.woodmann.com/collaborative/tools/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Collaborative RCE Tool Library - Ring 3 Debuggers (including sub-categories)</title>
		<link>http://www.woodmann.com/collaborative/tools/index.php/Special:FeedListing/Ring_3_Debuggers/feed?recursive=1&amp;feed_type=rss</link>
		<description>Update Notification Feed for Category: Ring 3 Debuggers (and its sub-categories)</description>
		<language>en</language>
		<generator>MediaWiki 1.11.2 via dELTA feed generator</generator>
		<lastBuildDate>Sat, 21 Nov 2009 16:23:48 GMT</lastBuildDate>
		<item>
			<title>Tool Updated: Radare</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/Radare</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:.NET_Disassemblers&quot;&gt;.NET Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Assemblers&quot;&gt;Assemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Binary_Diff_Tools&quot;&gt;Binary Diff Tools&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Code_Injection_Tools&quot;&gt;Code Injection Tools&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Debuggers&quot;&gt;Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Disassemblers&quot;&gt;Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Hex_Editors&quot;&gt;Hex Editors&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Java_Disassembler_Libraries&quot;&gt;Java Disassembler Libraries&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Linux_Debuggers&quot;&gt;Linux Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Linux_Disassemblers&quot;&gt;Linux Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Linux_Tools&quot;&gt;Linux Tools&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Memory_Dumpers&quot;&gt;Memory Dumpers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Memory_Patchers&quot;&gt;Memory Patchers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Process_Dumpers&quot;&gt;Process Dumpers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Reverse_Engineering_Frameworks&quot;&gt;Reverse Engineering Frameworks&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:String_Finders&quot;&gt;String Finders&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Symbol_Retrievers&quot;&gt;Symbol Retrievers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:SysCall_Monitoring_Tools&quot;&gt;SysCall Monitoring Tools&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Tracers&quot;&gt;Tracers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;1.4.1&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;November 3, 2009&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&amp;lt;nowiki&amp;gt;The radare project aims to provide a complete unix-like toolchain for working with binary files. It currently provides a set of tools to work with x86, arm and java with some ones powerpc.&lt;br /&gt;&lt;br /&gt;The core is a raw hexadecimal editor for commandline with scripting features and perl/python extensions that gets extended with IO plugins that hooks the open/read/write/close/system calls.&lt;br /&gt;&lt;br /&gt;The debugger and disassembler has a code analysis module for x86, mips, arm and java. This way it's possible to draw graphs using Cairo on a GTK window or store the flow execution of a program on a log file and use the information to diff't against another trace or binary.&lt;br /&gt;&lt;br /&gt;The toolchain provides assemblers and disasemblers for x86, arm, mips (Loongson2F), sparc, CSR, m68k, powerpc, msil and java.&lt;br /&gt;&lt;br /&gt;The disassembler has been enhaced to handle inline comments, code block detections and flag references (data pointers or so).&lt;br /&gt;&lt;br /&gt;The debugger is mainly developed on linux and {Net&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Wed, 04 Nov 2009 09:18:47 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: IDA Pro</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/IDA_Pro</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:.NET_Disassemblers&quot;&gt;.NET Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Disassemblers&quot;&gt;Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:IPhone_Tools&quot;&gt;IPhone Tools&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Linux_Debuggers&quot;&gt;Linux Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Linux_Disassemblers&quot;&gt;Linux Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Mobile_Platform_Debuggers&quot;&gt;Mobile Platform Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Mobile_Platform_Disassemblers&quot;&gt;Mobile Platform Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Symbian_Tools&quot;&gt;Symbian Tools&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;5.5&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;June 15, 2009&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;The IDA Pro Disassembler and Debugger is an interactive, programmable, extendible, multi-processor disassembler hosted on Windows or on Linux. IDA Pro has become the de-facto standard for the analysis of hostile code, vulnerability research and COTS validation.&lt;br /&gt;&lt;br /&gt;There is also a free (crippled) version available (IDA Pro Free). See its own entry in the library for more info.&lt;br /&gt;&lt;br /&gt;As of January 7, 2007, the official IDA Pro website moved from the old URL (http://www.datarescue.com/idabase) to the one listed above.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Thu, 06 Aug 2009 16:22:01 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: EDB Linux Debugger</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/EDB_Linux_Debugger</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Debuggers&quot;&gt;Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Linux_Debuggers&quot;&gt;Linux Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;0.9.10&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;July 8, 2009&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Features&lt;br /&gt;    * Intuitive GUI interface&lt;br /&gt;    * The usual debugging operations (step-into/step-over/run/break)&lt;br /&gt;    * Conditional breakpoints&lt;br /&gt;    * Debugging core is implemented as a plugin so people can have drop in replacements. Of course if a given platform has several debugging APIs available, then you may have a plugin that implements any of them.&lt;br /&gt;    * Basic instruction analysis&lt;br /&gt;    * View/Dump memory regions&lt;br /&gt;    * Effective address inspection&lt;br /&gt;    * The data dump view is tabbed, allowing you to have several views of memory open at the same time and quickly switch between them.&lt;br /&gt;    * Importing of symbol maps&lt;br /&gt;    * Plugins&lt;br /&gt;          o Search for binary strings&lt;br /&gt;          o Code Bookmarks&lt;br /&gt;          o Breakpoint management&lt;br /&gt;          o Check for updates&lt;br /&gt;          o Environment variable viewer&lt;br /&gt;          o Heap block enumeration&lt;br /&gt;          o Opcode search engine plugin has basic functionality (similar to msfelfscan/msfpescan)&lt;br /&gt;          o Open file enumeration&lt;br /&gt;          o Reference finder&lt;br /&gt;          o String searching (like strings command in *nix)&lt;br /&gt;&lt;br /&gt;One of the main goals of this debugger is isolation of the debugger core from the display you see. The interface is written in QT4 and thus source portable to many platforms. The debugger core is actually a plugin and the platform specific code is isolated to just a few files, porting to a new OS would require porting these few files and implementing a plugin which implements the &amp;quot;DebuggerCoreInterface&amp;quot; interface. Also, because the plugins are based on the QPlugin API, and do their work through the DebuggerCoreInterface object, they are almost always portable with just a simple recompile. So far, the only plugin I have written which would not port with just a recompile is the heap analysis plugin, due to it's highly system specific nature.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Thu, 09 Jul 2009 01:47:28 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: W32DASM</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/W32DASM</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Disassemblers&quot;&gt;Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;8.94&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;March 11, 2003&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Before IDA Pro, W32DASM was the king of Windows 32 bit executable disassemblers.&lt;br /&gt;&lt;br /&gt;It also has a ring 3 debugger built-in.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Wed, 17 Jun 2009 11:26:02 GMT</pubDate>								</item>
		<item>
			<title>Tool Added: Wintruder</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/Wintruder</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:.NET_Debuggers&quot;&gt;.NET Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Visual_Basic_Debuggers&quot;&gt;Visual Basic Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;1.0.0.1&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;October 17, 2008&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Wintruder is an extendable debugger for Windows 9x and Windows XP.&lt;br /&gt;By default, it includes debug interfaces for:&lt;br /&gt;- Win32 Debug API&lt;br /&gt;	- Intel x86&lt;br /&gt;	- Microsoft VisualBasic p-code&lt;br /&gt;	- Virtual Dos Machine (XP only)&lt;br /&gt;- Win32 Stealth (XP only)&lt;br /&gt;	- Intel x86&lt;br /&gt;	- Microsoft VisualBasic p-code&lt;br /&gt;	- Virtual Dos Machine&lt;br /&gt;- Microsoft .Net (.Net 1.0 and up)&lt;br /&gt;	- .Net CIL&lt;br /&gt;&lt;br /&gt;You can use Wintruder for free. For more information read license.txt. If this file does not exist, type wintruder.exe -l&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This version of Wintruder is a development snapshot and far from being a final release.&lt;br /&gt;&lt;br /&gt;Most important limitations:&lt;br /&gt;- You may encounter several bugs and deficiencies.&lt;br /&gt;- The use of debug information is limited to bare function definitions.&lt;br /&gt;- The native .Net debugger is missing.&lt;br /&gt;- The script engine is not really working.&lt;br /&gt;- Much, much more…&lt;br /&gt;&lt;br /&gt;By the way:&lt;br /&gt;- The DiaDbg plug-in requires the Microsoft Debug Interface Access library. (msdia80.dll, msdia71.dll or msdia20.dll)&lt;br /&gt;- To be more precise: None of the libraries Wintruder is bound to is included in this distribution.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Fri, 24 Oct 2008 20:27:40 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: Immunity Debugger</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/Immunity_Debugger</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:OllyDbg_Custom_Versions&quot;&gt;OllyDbg Custom Versions&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;1.6&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;March 27, 2008&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Immunity Debugger is based on OllyDbg.&lt;br /&gt;&lt;br /&gt;Immunity Debugger is a powerful new way to write exploits, analyze malware, and reverse engineer binary files. It builds on a solid user interface with function graphing, the industry's first heap analysis tool built specifically for heap creation, and a large and well supported Python API for easy extensibility.&lt;br /&gt;&lt;br /&gt;* A debugger with functionality designed specifically for the security industry&lt;br /&gt;* Cuts exploit development time by 50%&lt;br /&gt;* Simple, understandable interfaces&lt;br /&gt;* Robust and powerful scripting language for automating intelligent debugging&lt;br /&gt;* Lightweight and fast debugging to prevent corruption during complex analysis&lt;br /&gt;* Connectivity to fuzzers and exploit development tools&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Mon, 02 Jun 2008 14:01:18 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: WinDbg</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/WinDbg</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_0_Debuggers&quot;&gt;Ring 0 Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;6.8.4.0&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;October 18, 2007&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Microsoft's own ring 0 debugger. Quite unfriendly to use, but one of the remaining stable options since the discontinuation of SoftICE.&lt;br /&gt;&lt;br /&gt;You will find some extensions that make it at least somewhat easier to use, in the WinDbg extensions category.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Sun, 24 Feb 2008 21:09:31 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: OllyDbg</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/OllyDbg</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;1.10 (and 2.0 pre-alpha)&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;

&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;The world's most famous ring 3 debugger.&lt;br /&gt;&lt;br /&gt;The first public (pre-alpha) version of OllyDbg 2.0 was released on December 25, 2007, so you can now test it yourself if you want!&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Sun, 24 Feb 2008 21:02:16 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: Obsidian</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/Obsidian</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Non-Intrusive_Debuggers&quot;&gt;Non-Intrusive Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;

&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;October 21, 2006&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Obsidian is a non-intrusive debugger, which means that it doesn't change the targets process as a normal debugger would. Being in beta state there can be some minor issues but it should be mostly stable.&lt;br /&gt;&lt;br /&gt;The main advantage would be that you don't have to care anymore about those anti-debugger-tricks like:&lt;br /&gt;&lt;br /&gt;    * IsDebuggerPresent() which boils down to checking the debugger-flag in the PEB&lt;br /&gt;    * self-debugging: creating another thread or process which attaches itself to the target in order to keep other debuggers from doing so and probably doing some code 'corrections' during runtime.&lt;br /&gt;    * timing checks to recognize delays due to an attached debugger.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Windows API&lt;br /&gt;&lt;br /&gt;The debugging functions are implemented by using standard Win32-API calls like:&lt;br /&gt;&lt;br /&gt;    * CreateProcess&lt;br /&gt;    * SuspendThread / ResumeThread&lt;br /&gt;    * ReadProcessMemory / WriteProcessMemory&lt;br /&gt;    * GetThreadContext / SetThreadContext&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Breakpoints&lt;br /&gt;&lt;br /&gt;To implement breakpoints I used a trick I learned from a very interesting paper in Codebreakers Journal. Its name is &amp;quot;Guide on How to Play with Processes Memory, Write Loaders and Oraculumns&amp;quot; and was written by Shub Nigurrath. Shub Nigurrath references the trick itself to yates and his paper &amp;quot;Creating Loaders &amp;amp; Dumpers - Crackers Guide to Program Flow Control&amp;quot;, so kudos to him too. The trick is to place the opcode EB FE at the address you want to stop. This code stands for &amp;quot;jmp -2&amp;quot; which is the shortest way to code a while(1); loop I know of.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Dis-/Assembling&lt;br /&gt;&lt;br /&gt;To dis-/assemble the opcodes, I used the awesome code of the disasm zip-file Oleh Yuschuk, creator of OllyDbg, has put on his site. OllyDbg has rightfully gained a reputation for being intuitive and a real alternative to SoftICE when it comes to ring 3 applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* File-information&lt;br /&gt;&lt;br /&gt;To extract some information about code and data segments and other stuff about the process I used the information gained from the paper &amp;quot;Portable Executable File Format – A Reverse Engineer View&amp;quot; written by Goppit. This paper can also be found at Codebreakers Journal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Singlestep and stepping into calls&lt;br /&gt;&lt;br /&gt;Since I couldn't use debug-events, I chose the simple way out and &amp;quot;just&amp;quot; set a breakpoint on the instruction which would be executed next. This involved checking for jumps, calls and returns to make sure to get the right instruction. Checking for conditional jumps was easy since the disasm files (mentioned above) could already do this for me with the Checkcondition function. The same applies for calls. With the exception of calls that got their destination from a register. After searching for a while I found that the lower nibble of the call-opcode gave away the register that should be used. Last time I wrote about StackWalk-function and I have to admit that I was wrong about using it for returns since intel-documentation states that ret in any case uses the first element form the stack. So there's nothing to be done except reading the DWORD pointed to by the ESP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Thread Local Storage (TLS)&lt;br /&gt;&lt;br /&gt;The first piece of code that will be executed when a new process is started isn't at the address pointed to by AddressOfEntryPoint. Actually DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS] in the optional header points to a IMAGE_TLS_DIRECTORY32 structure which contains a pointer to a list of functions executed before going to the AddressOfEntryPoint.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Process dumping&lt;br /&gt;&lt;br /&gt;When I started writing the code, I was wondering why there didn't seem to be any tutorial about dumping a running process with your own program. Most tutorials I found used existing tools for it. There are some really good papers about rebuilding the IAT by the way. Which I will keep in mind for one of the next releases. As I began to reread the PE documentation it occurred to me that this is about all you need to dump an unprotected process. You can get the headers directly from the imagebase of the module and from them you can gather all the other parts. So the job is reassembling the parts scattered through process space by the loader and writing them into a file. Just keep boundaries and offsets in mind.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Symbols&lt;br /&gt;&lt;br /&gt;Working with symbols is much easier than I first thought. Most work is done by the Sym*-functions provided by the imagehlp library (for example use SymGetSymFromAddr to get a symbols name by its address). So the only part which requires a bit of work, is to determine the levels of indirection so calls via a jumptable could be resolved correctly. The same goes for applying the IDA map file. Once it is parsed, it's back to analysing references again. By the way, IDA is a very impressive disassembler by Ilfak Guilfanov (DataRescue). It provides a deeper analysis and another view to an executable than most debuggers do. Plus, as the name implies, you don't need to actually execute the target, which is pretty cool, especially for malware analysis.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Basic block analysis&lt;br /&gt;&lt;br /&gt;After the construction of the (more or less) needed basics I decided to take a shot at improving the code analysis. A short research yielded the magical words 'basic block', which is a term that originated from optimization concepts of compilers. But perhaps it's better to first explain what basic blocks are. A basic block is, generally spoken, a sequence of commands that doesn't contain any jumps and isn't jumped into. Where jump doesn't mean the jmp instruction but generally everything that explicitly moves the eip anywhere. The commands I used the determine the end of a basic block are:&lt;br /&gt;&lt;br /&gt;    * all jumps, conditional and unconditional (e.g. jmp, je...)&lt;br /&gt;    * call&lt;br /&gt;    * ret&lt;br /&gt;&lt;br /&gt;How are blocks and addresses handled? The Analyser contains two lists, where one holds all addresses not analysed yet and the other contains the generated blocks. By doing this there is a clean separation between unknown and known blocks. To avoid an infinite loop e.g. when dealing with backward jumps the analyser only processes addresses that do not lie on the beginning of an already processed code-block. Also no processing of addresses out of the modules scope will be performed. This is done to keep the processing-time at an acceptable level. The analysis of the code starts at the entrypoint and moves onward from there on. Calls and conditional jumps both yield at best two addresses where the analysis of a new block could be started. The 'at best' results from the fact that at the time of analysis indirect addressing with register can't be resolved, so this is a path that can't analysed. When an address points into a known block this means that the block needs to be split, since an address can only come from a jump to this location which means the former block ends there and a new one begins. At the moment the analyser doesn't make any assumptions about what could be meant but only cares for definate information. Thus there are blocks of code which haven't been recognized and therefore are treated as filling. This affects the readability of the disassembled code. Since any opcode not flagged as code will be disassembled in byte steps. For example an opcode like 74 53 at address 00403F52 will result in the following output:&lt;br /&gt;&lt;br /&gt;00403F52     74 53      JE  403FA7&lt;br /&gt;00403F53     53         PUSH  EBX&lt;br /&gt;&lt;br /&gt;Mind the addresses, that is what was meant by 'in byte steps'. This can be fixed by telling the analyser to process the code from the current selection onwards.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Modular approach&lt;br /&gt;&lt;br /&gt;After starting with a single executable, I decided to break it up into the GUI which in itself still contains a lot of intelligence and the basic obsidian class which contains all of the debugger- like functions. The main reason for this was to be able to pass the obsidian class to a plugin. But this way you can also easily use the obsidian class in other programs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Plugin interface&lt;br /&gt;&lt;br /&gt;At the moment there is only a by call interface available, which means that the plugin will only be called when the user selects the plugin from the list. To write a working plugin for obsidian you need to export the following two functions from a dll.&lt;br /&gt;&lt;br /&gt;extern &amp;quot;C&amp;quot; void EXPORT GetName(char* p, unsigned int len);&lt;br /&gt;extern &amp;quot;C&amp;quot; DWORD EXPORT Go(Obsidian* p);&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;As the name of the first function implies its only purpose is to store the name of the plugin in the supplied buffer. The second function gets called when the user clicks on the menu entry. This is the place where your plugin can do its work. The paramer you receive is a valid class pointer which should be used by you instead of the singleton construct. To make Obsidian recognize a plugin you need to create a folder called &amp;quot;PlugIns&amp;quot; in the Obsidian-directory and put the dlls into that folder.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Sun, 24 Feb 2008 20:54:03 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: IDA Pro Free</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/IDA_Pro_Free</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Disassemblers&quot;&gt;Disassemblers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;4.9&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;November 2, 2007&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;This is the (crippled) freeware edition of the IDA Pro debugger (see its own entry in the library for more info).&lt;br /&gt;&lt;br /&gt;Differences from the commercial version is, among others:&lt;br /&gt;&lt;br /&gt;* No remote debugging&lt;br /&gt;* No Linux debugging (disassembling only)&lt;br /&gt;* No other OS support at all (Mac OSX, WinCE)&lt;br /&gt;* Only PE, COFF, OMF, ELF and Dos is supported (not NE)&lt;br /&gt;* No console version (idaw.exe)&lt;br /&gt;* No graphical view (5.0+)&lt;br /&gt;* Only x86 family processor module included (metapc)&lt;br /&gt;* No x64 support at all&lt;br /&gt;* Some FLIRT signatures are out-dated&lt;br /&gt;* Fewer included plugins&lt;br /&gt;* Difficulty identifying parameters in some cases (no PIT)&lt;br /&gt;* Buggy WINE support&lt;br /&gt;* Incompatible with plugins for commercial versions (plugins can be patched with another tool available in this library to work with the free version though!)&lt;br /&gt;&lt;br /&gt;The previous free version (4.3) is available at the following URL, if you for some reason wouldn't like the latest free version 4.9:&lt;br /&gt;http://www.datarescue.be/idafreeware/freeida43.exe&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Sun, 24 Feb 2008 20:48:54 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: Poke</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/Poke</link>
			<description>&lt;P&gt;&lt;B&gt;Listed in categories:&lt;/B&gt;&amp;nbsp;&lt;I&gt;&lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Non-Intrusive_Debuggers&quot;&gt;Non-Intrusive Debuggers&lt;/a&gt;, &lt;a href=&quot;http://www.woodmann.com/collaborative/tools/index.php/Category:Ring_3_Debuggers&quot;&gt;Ring 3 Debuggers&lt;/a&gt;&lt;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;

&lt;/p&gt;&lt;p&gt;&lt;b&gt;Most recent release date:&lt;/b&gt;&lt;br /&gt;

&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Poke is a run-time process examination tool. It reminds slightly of a debugger, but is injected into a running process and does not use the Debug API. This tool can give you some valuable help if the process you want to examine has some heavy anti-debugging features. Poke is under development and is tested and works on Win2K.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Sat, 05 Jan 2008 18:14:53 GMT</pubDate>								</item>
	</channel>
</rss>