<?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 - Debugger Libraries (including sub-categories)</title>
		<link>http://www.woodmann.com/collaborative/tools/index.php/Special:FeedListing/Debugger_Libraries/feed?feed_type=rss&amp;recursive=1</link>
		<description>Update Notification Feed for Category: Debugger Libraries (and its sub-categories)</description>
		<language>en</language>
		<generator>MediaWiki 1.11.2 via dELTA feed generator</generator>
		<lastBuildDate>Sat, 21 Nov 2009 16:18:36 GMT</lastBuildDate>
		<item>
			<title>Tool Updated: PaiMei</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/PaiMei</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:Debugger_Libraries&quot;&gt;Debugger Libraries&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;/I&gt;&lt;/P&gt;&lt;p&gt;&lt;b&gt;Most recent version:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;1.1-REV122&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;May 22, 2007&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;PaiMei, is a reverse engineering framework consisting of multiple extensible components. The framework can essentially be thought of as a reverse engineer's swiss army knife and has already been proven effective for a wide range of both static and dynamic tasks such as fuzzer assistance, code coverage tracking, data flow tracking and more. The framework breaks down into the following core components:&lt;br /&gt;&lt;br /&gt;    * PyDbg: A pure Python win32 debugging abstraction class.&lt;br /&gt;    * pGRAPH: A graph abstraction layer with seperate classes for nodes, edges and clusters.&lt;br /&gt;    * PIDA: Built on top of pGRAPH, PIDA aims to provide an abstract and persistent interface over binaries (DLLs and EXEs) with separate classes for representing functions, basic blocks and instructions. The end result is the creation of a portable file that when loaded allows you to arbitrarily navigate throughout the entire original binary. &lt;br /&gt;&lt;br /&gt;A layer above the core components you will find the remainder of the PaiMei framework broken into the following over-arching components:&lt;br /&gt;&lt;br /&gt;    * Utilities: A set of utilities for accomplishing various repetitive tasks.&lt;br /&gt;    * Console: A pluggable WxPython GUI for quickly and efficiently rolling out your own sexy RE utilities.&lt;br /&gt;    * Scripts: Individual scripts for accomplishing various tasks. One very important example of which is the pida_dump.py IDA Python script which is run from IDA to generate .PIDA modules. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The documentation for the framework is available online at: http://pedram.openrce.org/PaiMei/docs&lt;br /&gt;&lt;br /&gt;A very informative discussion thread about PaiMei, including a bunch of tutorials on how to use the different aspects of it, can be found at:&lt;br /&gt;http://www.woodmann.com/forum/showthread.php?t=10851&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Sun, 28 Jun 2009 13:33:19 GMT</pubDate>								</item>
		<item>
			<title>Tool Added: Ragweed</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/Ragweed</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:Debugger_Libraries&quot;&gt;Debugger Libraries&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;Ragweed is available as a gem through github:&lt;br /&gt;&lt;br /&gt;sudo gem install tduehr-ragweed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why a scriptable debugger?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When reversing, the usual debugging tools for developers aren’t as useful. They’re built for stepping interactively through programs you have source code for. They don’t generally have methods to get data out.&lt;br /&gt;&lt;br /&gt;Reversing also requires being able to do mean and nasty things to the running process. When tracing calls, you want to watch how they interact. The last thing you want to do is anything manual. Automation is a requirement.&lt;br /&gt;&lt;br /&gt;Also helpful is the ability to automate information gathering tasks, or the ability to dynamically add, remove or change breakpoints. These features are why scriptable debuggers have been created: To play with black boxes in a more dynamic and seedier manner.&lt;br /&gt;&lt;br /&gt;What’s available already?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are already scriptable debuggers out there. The most notable are PaiMei/PyDbg, Immunity Debugger and IDA.&lt;br /&gt;&lt;br /&gt;PaiMei is written in Python, bills itself as “a reverse engineer’s swiss army knife” and uses the Python ctypes library for low level win32 calls.&lt;br /&gt;&lt;br /&gt;Immunity Debugger is a GUI debuggger for win32 that uses Python for its scripting functionality.&lt;br /&gt;&lt;br /&gt;IDA Pro is largely a win32 disassembler, but it is scriptable, again in Python, and includes a debugging module.&lt;br /&gt;&lt;br /&gt;Before I get run off by a screaming mob with pitchforks, flightless birds, members of the family bovidae, etc., I will also mention GDB which has a library in development (libgdb) and can be scripted through macros.&lt;br /&gt;&lt;br /&gt;With the exception of GDB which runs on most platforms and has its own macro language, these all share two common problems: Win32 and Python. Matasano is a Ruby shop. We like Ruby. It is good to us. We also wanted a tool for non-Win32 applications. But mostly, we just wanted something in Ruby.&lt;br /&gt;&lt;br /&gt;Enter Ragweed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I’m going to stick to the OSX side of Ragweed for this article since I’m most familiar with it and there is still work to be done to unify the (currently) three debugging APIs —- Win32, Linux, and OSX —- inside Ragweed.&lt;br /&gt;&lt;br /&gt;Under the hood, Ragweed (on OSX) uses Ruby/DL to perform the various low level system calls necessary to create a debugger. (More about that in my post from last year). These calls are abstracted somewhat to provide a smoother, more Ruby-like interface.&lt;br /&gt;&lt;br /&gt;There are two caveats for Ragweed in OSX:&lt;br /&gt;&lt;br /&gt;    * Due to the changes in Ruby 1.9 to DL, it is currently incompatible with 1.9.&lt;br /&gt;    * Also, under OSX, Ragweed wants to run as root due to restrictions on&lt;br /&gt;      Code:&lt;br /&gt;&lt;br /&gt;      task_for_pid&lt;br /&gt;&lt;br /&gt;      .&lt;br /&gt;&lt;br /&gt;A quick example (this we can do in IRB):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# debugging ftp using default signal handlers, printing registers every stop and logging calls to _lpwd&lt;br /&gt;&lt;br /&gt;require ‘ragweed’&lt;br /&gt;class DebugFtp &amp;lt; Debuggerosx&lt;br /&gt;&lt;br /&gt;# print the registers every time the process stops&lt;br /&gt;&lt;br /&gt;def on_stop(signal)&lt;br /&gt;&lt;br /&gt;puts &amp;quot;Stopped with signal #{signal}&amp;quot;&lt;br /&gt;&lt;br /&gt;self.threads.each {''&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Sun, 28 Jun 2009 13:32:39 GMT</pubDate>								</item>
		<item>
			<title>Tool Updated: WinAppDbg (Python module)</title>
			<link>http://www.woodmann.com/collaborative/tools/index.php/WinAppDbg_%28Python_module%29</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:Debugger_Libraries&quot;&gt;Debugger Libraries&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.2&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;Jun 16, 2009&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;The WinAppDbg python module allows developers to quickly code instrumentation scripts in Python under a Windows environment.&lt;br /&gt;&lt;br /&gt;It uses ctypes to wrap many Win32 API calls related to debugging, and provides an object-oriented abstraction layer to manipulate threads, libraries and processes, attach your script as a debugger, trace execution, hook API calls, handle events in your debugee and set breakpoints of different kinds (code, hardware and memory). Additionally it has no native code at all, making it easier to maintain or modify than other debuggers on Windows.&lt;br /&gt;&lt;br /&gt;The intended audience are QA engineers and software security auditors wishing to test / fuzz Windows applications with quickly coded Python scripts. Several ready to use utilities are shipped and can be used for this purposes.&lt;br /&gt;&lt;br /&gt;Current features also include disassembling x86 native code (using the open source diStorm project, see http://ragestorm.net/distorm/), debugging multiple processes simultaneously and produce a detailed log of application crashes, useful for fuzzing and automated testing.&lt;/i&gt;
&lt;/p&gt;</description>
			<pubDate>Tue, 16 Jun 2009 18:21:25 GMT</pubDate>								</item>
	</channel>
</rss>