<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>OpenRCE: Blog</title>
        <link>http://www.openrce.org/rss/feeds/blog</link>
        <description>OpenRCE: The Open Reverse Code Engineering Community</description>
                <item>
            <title>PyEmu 0.0.2</title>
                            <pubDate>Fri, 07 Sep 2007 11:03:13 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/888/PyEmu_0.0.2</link>
                                        <author>codypierce &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Ive uploaded a new version of PyEmu.&amp;nbsp;&amp;nbsp;It has no new features unless you call huge bug fixes a &amp;quot;feature&amp;quot;.&amp;nbsp;&amp;nbsp;Now that we are at the lofty 0.0.2 release ill start planning the 1.0 release party for 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.openrce.org/repositories/users/codypierce/pyemu-0.0.2.zip&quot;&gt;PyEmu-0.0.2.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I will be moving the software to some place besides here in the future because this isnt exactly a good location for it...maybe google code?&amp;nbsp;&amp;nbsp;As always email me (or message me here) if you find more bugs.&lt;br /&gt;
&lt;br /&gt;
Thanks to Charlie, Kimmo, and Nemo for the bugs.</description>
                    </item>
                <item>
            <title>Step by Step of How TPTI-07-013 was Discovered</title>
                            <pubDate>Tue, 24 Jul 2007 15:56:33 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/825/Step_by_Step_of_How_TPTI-07-013_was_Discovered</link>
                                        <author>codypierce &lt;email-suppressed@example.com&gt;</author>
                                                    <description>This is a blog entry on how I came across this bug, its very detailed, step by step and pretty long so fair warning :)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dvlabs.tippingpoint.com/blog/1024/Step-by-Step-of-How-TPTI-07-013-was-Discovered&quot;&gt;http://dvlabs.tippingpoint.com/blog/1024/Step-by-Step-of-How-TPTI-07-013-was-Discovered&lt;/a&gt;</description>
                    </item>
                <item>
            <title>Binary Instruction Word Clouds</title>
                            <pubDate>Fri, 19 Jan 2007 00:40:35 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/575/Binary_Instruction_Word_Clouds</link>
                                        <author>codypierce &lt;email-suppressed@example.com&gt;</author>
                                                    <description>I have been working on an x86 emulator in python recently and before starting I did some research into just how many instructions in the hundreds are actually used in a real world binary.&amp;nbsp;&amp;nbsp;The results weren't surprising in that only a handful are *really* used.&amp;nbsp;&amp;nbsp;Id say 30 or so are used 80% of the time.&amp;nbsp;&amp;nbsp;With that in mind I thought it would be interesting to use the popular &amp;quot;word cloud&amp;quot; data representation to display those instruction.&amp;nbsp;&amp;nbsp;The word cloud is simple in that the more occurrences get a heavier weight (font).&amp;nbsp;&amp;nbsp;Since this blog wont let me add the real page here is an image.&lt;br /&gt;
&lt;br /&gt;
XP SP2 kernel32.dll (961K)&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://new.caughq.org/~intropy/dump/kernel32.jpg&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://new.caughq.org/~intropy/dump/kernel32.html&quot;&gt;Click here for page that includes counts&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
XP SP2 shell32.dll (8256K)&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://new.caughq.org/~intropy/dump/shell32.jpg&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://new.caughq.org/~intropy/dump/shell32.html&quot;&gt;Click here for page that includes counts&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Kind of a novel idea.&amp;nbsp;&amp;nbsp;I suppose you could also do something like represent heap chunks by address and weight them based on access, or windows API calls and use.</description>
                    </item>
                <item>
            <title>Pydbg Console Class</title>
                            <pubDate>Sun, 12 Nov 2006 04:26:57 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/501/Pydbg_Console_Class</link>
                                        <author>codypierce &lt;email-suppressed@example.com&gt;</author>
                                                    <description>I just wrote a pydbg class for providing an interactive console for controlling the debugger.&amp;nbsp;&amp;nbsp;This can be especially useful in complex pydbg scripts that you need to interact with in certain cases.&amp;nbsp;&amp;nbsp;This of course is not supposed to be a replacement for the real debuggers like windbg (or even close) but whatever.&amp;nbsp;&amp;nbsp;One of the best features is the ability to single step backwards in the process.&amp;nbsp;&amp;nbsp;Ill upload it next week after some cosmetic changes and bug fixes.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
C:\Code\Python\paimei&amp;gt;pydbgc.py notepad.exe 1&lt;br /&gt;
[*] Trying to attach to existing notepad.exe&lt;br /&gt;
[*] Attaching to notepad.exe (2996)&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c901231 esp=0092ffcc ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c901231&amp;nbsp;&amp;nbsp;ret&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;1&amp;quot; specifies whether to break on initial attach, and would probably not be needed if tied into your own pydbg script.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
pydbgc&amp;gt; help&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bp:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set a breakpoint (ex: bp 7ffdb000)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List breakpoints&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Clear breakpoints&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bd:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delete a breakpoint (ex: db 2)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Single Step&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sb:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Single Step Backwards&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Modify a register (ex: r eax=10)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dd:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dump Data&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dc:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dump Data Charactes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Call Stack&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;seh:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Current SEH&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;g:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Resume Execution&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;quit:&amp;nbsp;&amp;nbsp; Quit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;help:&amp;nbsp;&amp;nbsp; Help&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Not much but if your doing more than this use a real debugger...or let me know and ill try and include it.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
pydbgc&amp;gt; bp 7c9507bb&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; g&lt;br /&gt;
&lt;br /&gt;
Continuing&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bb esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bb&amp;nbsp;&amp;nbsp;or dword [ebp-0x4],0xffffffff&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; bl&lt;br /&gt;
[0] ntdll.dll!7c9507bb&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; bd 0&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; bl&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
I named stuff after windbg cause thats what Im use to.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
pydbgc&amp;gt; s&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bf esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bf&amp;nbsp;&amp;nbsp;push 0x0&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; r&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bf esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bf&amp;nbsp;&amp;nbsp;push 0x0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; r ebx=1000&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; r&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=000003e8 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bf esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bf&amp;nbsp;&amp;nbsp;push 0x0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Some single step action and register modification...I didnt use &amp;quot;t&amp;quot; for single step cause I like &amp;quot;s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
pydbgc&amp;gt; g&lt;br /&gt;
&lt;br /&gt;
Continuing&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c919126 esp=0092ffc0 ebp=0092ffc4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c919126&amp;nbsp;&amp;nbsp;push 0x44&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd 0092ffc0&lt;br /&gt;
&lt;br /&gt;
0092ffc0: 7c961bed 0092fff4 7c9507c6 00000000 00000005 00000004 00000001 0092ffd0&lt;br /&gt;
0092ffe0: 00000000 ffffffff 7c90ee18 7c9507c8 ffffffff 00000000 00000000 00000000&lt;br /&gt;
00930000: 00000008 00004060 00000000 ffffffff 00002fa0 00000001 00000000 00000000&lt;br /&gt;
00930020: 00000000 00000000 00000058 00001050 28c7f1d0 11d2de25 1000ddaf b599275a&lt;br /&gt;
00930040: 0000000b&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd esp&lt;br /&gt;
&lt;br /&gt;
0092ffc0: 7c961bed 0092fff4 7c9507c6 00000000 00000005 00000004 00000001 0092ffd0&lt;br /&gt;
0092ffe0: 00000000 ffffffff 7c90ee18 7c9507c8 ffffffff 00000000 00000000 00000000&lt;br /&gt;
00930000: 00000008 00004060 00000000 ffffffff 00002fa0 00000001 00000000 00000000&lt;br /&gt;
00930020: 00000000 00000000 00000058 00001050 28c7f1d0 11d2de25 1000ddaf b599275a&lt;br /&gt;
00930040: 0000000b&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd eax&lt;br /&gt;
&lt;br /&gt;
7ffdb000: 00010000 ffffffff 01000000 001a1e90 00020000 00000000 000a0000 7c97e4c0&lt;br /&gt;
7ffdb020: 7c901005 7c9010ed 00000001 77d42980 00000000 00000000 00000000 00000000&lt;br /&gt;
7ffdb040: 7c97e480 0007ffff 00000000 7f6f0000 7f6f0000 7f6f0688 7ffb0000 7ffc1000&lt;br /&gt;
7ffdb060: 7ffd2000 00000001 00000000 00000000 079b8000 ffffe86d 00100000 00002000&lt;br /&gt;
7ffdb080: 00010000&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd eax+100&lt;br /&gt;
&lt;br /&gt;
7ffdb064: 00000001 00000000 00000000 079b8000 ffffe86d 00100000 00002000 00010000&lt;br /&gt;
7ffdb084: 00001000 0000000a 00000010 7c97de80 00420000 00000000 00000014 7c97c0d8&lt;br /&gt;
7ffdb0a4: 00000005 00000001 02000a28 00000002 00000002 00000004 00000000 00000000&lt;br /&gt;
7ffdb0c4: 00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000&lt;br /&gt;
7ffdb0e4: 00000000&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd 1&lt;br /&gt;
&lt;br /&gt;
00000001: ???????? ???????? ???????? ???????? ???????? ???????? ???????? ????????&lt;br /&gt;
00000021: ???????? ???????? ???????? ???????? ???????? ???????? ???????? ????????&lt;br /&gt;
00000041: ???????? ???????? ???????? ???????? ???????? ???????? ???????? ????????&lt;br /&gt;
00000061: ???????? ???????? ???????? ???????? ???????? ???????? ???????? ????????&lt;br /&gt;
00000081: ????????&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Fancy &amp;quot;?&amp;quot; marks just like my hero.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507a8 esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507a8&amp;nbsp;&amp;nbsp;jmp 0x7c9507bb&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; s&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bb esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bb&amp;nbsp;&amp;nbsp;or dword [ebp-0x4],0xffffffff&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; s&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bf esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bf&amp;nbsp;&amp;nbsp;push 0x0&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; s&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507c1 esp=0092ffcc ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507c1&amp;nbsp;&amp;nbsp;call 0x7c961be3&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd esp&lt;br /&gt;
&lt;br /&gt;
0092ffcc: 00000000 00000005 00000004 00000001 0092ffd0 00000000 ffffffff 7c90ee18&lt;br /&gt;
0092ffec: 7c9507c8 ffffffff 00000000 00000000 00000000 00000008 00004060 00000000&lt;br /&gt;
0093000c: ffffffff 00002fa0 00000001 00000000 00000000 00000000 00000000 00000058&lt;br /&gt;
0093002c: 00001050 28c7f1d0 11d2de25 1000ddaf b599275a 0000000b 00000001 00000000&lt;br /&gt;
0093004c: 00000f48&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; sb&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bf esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bf&amp;nbsp;&amp;nbsp;push 0x0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd esp&lt;br /&gt;
&lt;br /&gt;
0092ffd0: 00000005 00000004 00000001 0092ffd0 00000000 ffffffff 7c90ee18 7c9507c8&lt;br /&gt;
0092fff0: ffffffff 00000000 00000000 00000000 00000008 00004060 00000000 ffffffff&lt;br /&gt;
00930010: 00002fa0 00000001 00000000 00000000 00000000 00000000 00000058 00001050&lt;br /&gt;
00930030: 28c7f1d0 11d2de25 1000ddaf b599275a 0000000b 00000001 00000000 00000f48&lt;br /&gt;
00930050: 00000574&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; sb&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bb esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bb&amp;nbsp;&amp;nbsp;or dword [ebp-0x4],0xffffffff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; s&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507bf esp=0092ffd0 ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507bf&amp;nbsp;&amp;nbsp;push 0x0&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; s&lt;br /&gt;
&lt;br /&gt;
eax=7ffdb000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005&lt;br /&gt;
eip=7c9507c1 esp=0092ffcc ebp=0092fff4&lt;br /&gt;
&lt;br /&gt;
ntdll.dll!7c9507c1&amp;nbsp;&amp;nbsp;call 0x7c961be3&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt; dd esp&lt;br /&gt;
&lt;br /&gt;
0092ffcc: 00000000 00000005 00000004 00000001 0092ffd0 00000000 ffffffff 7c90ee18&lt;br /&gt;
0092ffec: 7c9507c8 ffffffff 00000000 00000000 00000000 00000008 00004060 00000000&lt;br /&gt;
0093000c: ffffffff 00002fa0 00000001 00000000 00000000 00000000 00000000 00000058&lt;br /&gt;
0093002c: 00001050 28c7f1d0 11d2de25 1000ddaf b599275a 0000000b 00000001 00000000&lt;br /&gt;
0093004c: 00000f48&lt;br /&gt;
&lt;br /&gt;
pydbgc&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
And some backwards stepping action...some quirks in it but ill work em out.&amp;nbsp;&amp;nbsp;Hit me up on here.</description>
                    </item>
                <item>
            <title>IDA Live Analysis Markup</title>
                            <pubDate>Wed, 01 Nov 2006 15:07:42 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/496/IDA_Live_Analysis_Markup</link>
                                        <author>codypierce &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Often times when reversing a binary I have key elements that I do not know.&amp;nbsp;&amp;nbsp;This is an inherent problem, as anyone knows, with static analysis.&amp;nbsp;&amp;nbsp;Dynamic data elements that are resolved at runtime often hinder progress when understanding a piece of code.&amp;nbsp;&amp;nbsp;So I threw together a quick tagging method so that I can easily resolve this info through live analysis.&amp;nbsp;&amp;nbsp;To do this is two parts, tagging the data you want in IDA, and recording the data from the live process.&amp;nbsp;&amp;nbsp;I utilize IDA Python for part I and the Paimei module &amp;quot;pydbg&amp;quot; for part II...you could always do part I in pure idc if you hate IDA Python for some reason.&lt;br /&gt;
&lt;br /&gt;
Part I:&lt;br /&gt;
&lt;br /&gt;
I utilize the free form comments of an instruction in IDA to stuff my tag.&amp;nbsp;&amp;nbsp;Each tag begins with &amp;quot;**LA&amp;quot; which stands for live analysis if its not clear :).&amp;nbsp;&amp;nbsp;After that you can pull three types of information by using the &amp;quot;type&amp;quot; and associated &amp;quot;value&amp;quot; seperated by a ':'.&amp;nbsp;&amp;nbsp;The below lists these types, and types can be arbitrarily strung together.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Values&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comment&lt;br /&gt;
----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--------&lt;br /&gt;
'O'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,1,2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Operand: Enumerates the operand specified and retrieves its value&lt;br /&gt;
'R'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Register string&amp;gt;&amp;nbsp;&amp;nbsp;Register: Displays the contents of the specified register, accepts dword, word, byte representations&lt;br /&gt;
'M'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Memory address&amp;gt;&amp;nbsp;&amp;nbsp; Memory:&amp;nbsp;&amp;nbsp; Dereferences and displays the contents of the memory address as a dword&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the tagging in notepad.exe&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
.text:010073A4 008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__SEH_prolog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; int&lt;br /&gt;
.text:010073A4&lt;br /&gt;
.text:010073A9 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, ebx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; **LA R:ebx&lt;br /&gt;
.text:010073AB 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; lpModuleName **LA O:0&lt;br /&gt;
.text:010073AC 088&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edi, ds:GetModuleHandleA(x)&lt;br /&gt;
.text:010073B2 088&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;edi ; GetModuleHandleA(x)&lt;br /&gt;
.text:010073B4 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word ptr [eax], 5A4Dh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; **LA O:0, R:eax&lt;br /&gt;
.text:010073B9 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jnz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; short loc_10073DA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; **LA M:77e7000&lt;br /&gt;
.text:010073B9&lt;br /&gt;
.text:010073BB 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, [eax+3Ch]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; **LA R:ecx,R:ebx,R:esi,O:1,M:77e7012e&lt;br /&gt;
.text:010073BE 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, eax&lt;br /&gt;
.text:010073C0 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword ptr [ecx], 4550h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; **LA O:0&lt;br /&gt;
.text:010073C6 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jnz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; short loc_10073DA&lt;br /&gt;
.text:010073C6&lt;br /&gt;
.text:010073C8 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;movzx&amp;nbsp;&amp;nbsp; eax, word ptr [ecx+18h]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; **LA O:1&lt;br /&gt;
.text:010073CC 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, 10Bh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; **LA R:eax, R:ax, R:dh&lt;br /&gt;
.text:010073D1 084&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;short loc_10073F2&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
As you can see the tags are ',' seperated and values ':' seperated.&amp;nbsp;&amp;nbsp;Also existing comments can stay the same adding the tag anywhere you like.&lt;br /&gt;
&lt;br /&gt;
Once you have tagged the idb appropriately its necessary to parse the idb into something the live part can handle.&amp;nbsp;&amp;nbsp;I chose to write the IDA python script in such a way that it exports to a ',' delimited text file so that you can easily copy this to any host and run the live portion.&amp;nbsp;&amp;nbsp;The script, once ran, will ask for a destination file name and output the parsed tags to that file along with the IDA message window.&amp;nbsp;&amp;nbsp;An example of our above output is below.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
10073a9,r,4,EBX&lt;br /&gt;
10073ab,r,4,1&lt;br /&gt;
10073b4,p,4,1&lt;br /&gt;
10073b4,r,4,EAX&lt;br /&gt;
10073b9,p,4,77e70000&lt;br /&gt;
10073bb,r,4,ECX&lt;br /&gt;
10073bb,r,4,EBX&lt;br /&gt;
10073bb,r,4,ESI&lt;br /&gt;
10073bb,o,4,2&lt;br /&gt;
10073bb,p,4,77e7012e&lt;br /&gt;
10073c0,p,4,1&lt;br /&gt;
10073c8,o,4,2&lt;br /&gt;
10073cc,r,4,EAX&lt;br /&gt;
10073cc,r,2,AX&lt;br /&gt;
10073cc,r,1,DH&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
As you can see the output is somewhat similar to the &amp;quot;type&amp;quot; tags in IDA.&amp;nbsp;&amp;nbsp;There are also a couple of other fields that get auto discovered by the IDA Python script like size.&amp;nbsp;&amp;nbsp;The fields are as follows.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Address,Type,Size,Type Data&lt;br /&gt;
&lt;br /&gt;
Address: The address of the tag, and where we will break during execution&lt;br /&gt;
Type: Slightly different than the comment tags and are as follows&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;'r' Register&lt;br /&gt;
&amp;nbsp;&amp;nbsp;'p' Pointer (Memory location)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;'o' Offset&lt;br /&gt;
&lt;br /&gt;
Size: Size of the requested data...currently limited to 1,2, and 4 bytes&lt;br /&gt;
Type Data: The needed information about what is requested&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Once that has been generated it can be copied to the destination host and is ready for use in the live piece.&lt;br /&gt;
&lt;br /&gt;
Part II:&lt;br /&gt;
&lt;br /&gt;
The live piece of this utilizes the Paimei module &amp;quot;pydbg&amp;quot; to set breakpoints on our listed addresses and dereference data.&amp;nbsp;&amp;nbsp;It operates by reading in the list, setting break points on the proper code section addresses, and then handling those exceptions.&amp;nbsp;&amp;nbsp;Most of the &amp;quot;types&amp;quot; are straight forward except operands ('O').&amp;nbsp;&amp;nbsp;When an operand is requested it pulls the needed information from the disassembly (using pydasm) and works on it accordingly.&amp;nbsp;&amp;nbsp;One slight difference is when requesting the first operand (destination) it has to wait until after the instruction has completed in order to get the proper data.&amp;nbsp;&amp;nbsp;This is handled by delaying those request until all others have finished, and then setting a single step handler up and setting the process into that mode.&amp;nbsp;&amp;nbsp;The single step handler then does the same as all other operands restoring the previous single step state after the fact.&amp;nbsp;&amp;nbsp;The command line to this piece is as follows.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
live_analysis.py &amp;lt;process name&amp;gt; &amp;lt;live analysis config file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C:\Code\Python\live_analysis&amp;gt;live_analysis.py c:\windows\notepad.exe la.conf&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The live analysis script will first look to see if the process is running and attach, if the process is not running it will then do a load based on the path you specify.&amp;nbsp;&amp;nbsp;This allows easy analysis of services and critical processes.&lt;br /&gt;
&lt;br /&gt;
Once attached/loaded the script will set the appropriate break points and handlers.&amp;nbsp;&amp;nbsp;Some output of the script is below.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
C:\Code\Python\live_analysis&amp;gt;live_analysis.py c:\windows\notepad.exe la.conf&lt;br /&gt;
[*] Trying to attach to existing notepad.exe&lt;br /&gt;
[*] Trying to load c:\windows\notepad.exe&lt;br /&gt;
[*] Setting bp @ 0x010073a9&lt;br /&gt;
[*] Setting bp @ 0x010073ab&lt;br /&gt;
[*] Setting bp @ 0x010073b4&lt;br /&gt;
[*] Setting bp @ 0x010073b9&lt;br /&gt;
[*] Setting bp @ 0x010073bb&lt;br /&gt;
[*] Setting bp @ 0x010073c0&lt;br /&gt;
[*] Setting bp @ 0x010073c8&lt;br /&gt;
[*] Setting bp @ 0x010073cc&lt;br /&gt;
[*] Setting bp @ 0x0100752d&lt;br /&gt;
[*] Setting bp @ 0x0100752f&lt;br /&gt;
[*] Setting bp @ 0x01007531&lt;br /&gt;
[*] Setting bp @ 0x01007534&lt;br /&gt;
[*] Setting bp @ 0x01007535&lt;br /&gt;
[*] Setting bp @ 0x0100753b&lt;br /&gt;
[*] Setting bp @ 0x0100753c&lt;br /&gt;
[*] Setting bp @ 0x0100753e&lt;br /&gt;
[*] Setting bp @ 0x01007541&lt;br /&gt;
[*] Setting bp @ 0x01007544&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
As expected when those break points get hit, the requested data is recorded and output.&amp;nbsp;&amp;nbsp;This is my one piece of contention about this script.&amp;nbsp;&amp;nbsp;The output could be better utilized in another format, which I have yet to decide on.&amp;nbsp;&amp;nbsp;Some suggestions are loading into a database, or importing back into IDA.&amp;nbsp;&amp;nbsp;I did write a cheap hack to generate an idc from the output but it is not tested or well designed.&amp;nbsp;&amp;nbsp;The resulting output is below.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
[*] 0x010073a9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EBX [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x7ffd8000 [4]&lt;br /&gt;
[*] 0x010073ab&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[4]&lt;br /&gt;
[*] 0x010073b4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EAX [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x1000000&amp;nbsp;&amp;nbsp;[4]&lt;br /&gt;
[*] 0x010073b4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 [Pointer] is 0x905a4d&amp;nbsp;&amp;nbsp; [4]&lt;br /&gt;
[*] 0x010073b9 77e70000 [Pointer] is 0x905a4d&amp;nbsp;&amp;nbsp; [4]&lt;br /&gt;
[*] 0x010073bb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ECX [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x7ffb0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[4]&lt;br /&gt;
[*] 0x010073bb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EBX [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[4]&lt;br /&gt;
[*] 0x010073bb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ESI [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x1e06380f [4]&lt;br /&gt;
[*] 0x010073bb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 [Offset ] is 0xe0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [4]&lt;br /&gt;
[*] 0x010073bb 77e7012e [Pointer] is 0x40001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[4]&lt;br /&gt;
[*] 0x010073c0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 [Pointer] is 0x4550&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [4]&lt;br /&gt;
[*] 0x010073c8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 [Offset ] is 0xa07010b&amp;nbsp;&amp;nbsp;[4]&lt;br /&gt;
[*] 0x010073cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EAX [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x10b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[4]&lt;br /&gt;
[*] 0x010073cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AX [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0x10b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[2]&lt;br /&gt;
[*] 0x010073cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DH [Reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;] is 0xeb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [1]&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
As you can see all of the tagged data has been captured and displayed for your reversing needs.&lt;br /&gt;
&lt;br /&gt;
To wrap it up this is pretty handy when filling in some dynamically resolved pieces of a binary you may be statically reversing.&amp;nbsp;&amp;nbsp;The combination of the two (static and live) is something I try and make real as often as possible so that I can save myself from going between IDA and WinDbg or something similar (Although it could be said I now have to go between IDA and the LA stuff).&amp;nbsp;&amp;nbsp;However I find this much faster and easier on the eyes (the eyes part is also debatable :)).&amp;nbsp;&amp;nbsp;As stated above im not in love with the output format, and will eventually find something that fits better.&amp;nbsp;&amp;nbsp;In the future I would also like to expand this into a comprehensive IML (IDA Markup Language) where you can further bring the static/live methods together.&amp;nbsp;&amp;nbsp;Anyways email/message me if you have some suggestions or improvements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.openrce.org/repositories/users/codypierce/gen_la_config.py&quot;&gt;gen_la_config.py&lt;/a&gt;&amp;nbsp;&amp;nbsp;IDA Python script that generates the needed live analysis config file.&lt;br /&gt;
&lt;a href=&quot;https://www.openrce.org/repositories/users/codypierce/live_analysis.py&quot;&gt;live_analysis.py&lt;/a&gt;&amp;nbsp;&amp;nbsp;Live analysis command line script which records the appropriate data.&lt;br /&gt;
&lt;a href=&quot;https://www.openrce.org/downloads/details/208&quot;&gt;Paimei&lt;/a&gt;&amp;nbsp;&amp;nbsp;Paimei which is needed (actually only pydbg is needed) for the live analysis portion.</description>
                    </item>
            </channel>
</rss>
