<?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>Serial fault injection in binary code</title>
                            <pubDate>Tue, 25 Jan 2011 16:05:20 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1645/Serial_fault_injection_in_binary_code</link>
                                        <author>artemblagodarenko &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Target - cover code branches, that process memory allocation errors. Conditions - binary code analisys only.&lt;br /&gt;
&lt;br /&gt;
Let's analyze binary code that is result of this code compilation:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
int foo( unsigned int size )&lt;br /&gt;
 {&lt;br /&gt;
 void *a = NULL, *b = NULL, *c = NULL, *d = NULL, *e =NULL;&lt;br /&gt;
&lt;br /&gt;
a = malloc( size );&lt;br /&gt;
 if( !a )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;error allocating a\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;%u bytes allocated\n&amp;quot;, size );&lt;br /&gt;
&lt;br /&gt;
b = malloc( size * 2 );&lt;br /&gt;
 if( !b )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;error allocating b\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;%u bytes allocated\n&amp;quot;, size * 2 );&lt;br /&gt;
&lt;br /&gt;
c = malloc( size * 3 );&lt;br /&gt;
 if( !c )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;error allocating c\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;%u bytes allocated\n&amp;quot;, size * 3 );&lt;br /&gt;
&lt;br /&gt;
d = malloc( size * 4 );&lt;br /&gt;
 if( !d )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;error allocating d\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;%u bytes allocated\n&amp;quot;, size * 4 );&lt;br /&gt;
&lt;br /&gt;
e&amp;nbsp;&amp;nbsp;= malloc( size * 5 );&lt;br /&gt;
 if( !e )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;error allocating e\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;%u bytes allocated\n&amp;quot;, size * 5 );&lt;br /&gt;
&lt;br /&gt;
free( a );&lt;br /&gt;
 free( b );&lt;br /&gt;
 free( c );&lt;br /&gt;
 free( d );&lt;br /&gt;
 free( e );&lt;br /&gt;
&lt;br /&gt;
return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
int _tmain(int argc, _TCHAR* argv[])&lt;br /&gt;
 {&lt;br /&gt;
 LogInfo( &amp;quot;Press enter, please ...\n&amp;quot; );&lt;br /&gt;
 getchar();&lt;br /&gt;
 if( foo( 100 ) )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;Can't call foo with parameter 100\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;First call. Parameter 100\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
if( foo( 200 ) )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;Can't call foo with parameter 100\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;Second call. Parameter 200\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
if( foo( 500 ) )&lt;br /&gt;
 {&lt;br /&gt;
 LogErr( &amp;quot;Can't call foo with parameter 100\n&amp;quot; );&lt;br /&gt;
 return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
LogDbg( &amp;quot;Third call. Parameter 500\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
LogInfo( &amp;quot;\nPress enter, please ..\n&amp;quot; );&lt;br /&gt;
 getchar();&lt;br /&gt;
&lt;br /&gt;
return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Call&amp;nbsp;&amp;nbsp;foo( 10 ) using &lt;a href=&quot;http://ufoctf.ru/ufoblog/maiway&quot;&gt;Dataflow&lt;/a&gt;.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
faulttest_sub_1000( 10 )&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Main function code is covered. This is module coverage estimation:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://artem.ufoctf.ru/wp-content/uploads/2011/01/before.png&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
In next picture covered blocks are colored by yellow.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://artem.ufoctf.ru/wp-content/uploads/2011/01/noinject.png&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
White blocks are executed only after memory allocation fault. There is no another way call this code. MaiWay helps execute this code blocks. Let's use special macros for serial fault injection.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
CHECK_WITH_FAULT_INJECT( !faulttest_sub_1000( 10 ) );&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Little but very impotent coverage gain.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://artem.ufoctf.ru/wp-content/uploads/2011/01/after.png&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
Blocks than were not covered before are colored by yellow now.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://artem.ufoctf.ru/wp-content/uploads/2011/01/inject.png&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
Done.&lt;br /&gt;
&lt;br /&gt;
Program has some bugs. Error processing is wrong. There is no previous memory buffers freeing after memory allocation fault. It leads to memory leaks.&amp;nbsp;&amp;nbsp;Maiway can find such bugs.&amp;nbsp;&amp;nbsp;After each fault injection MaiWay check allocated memory buffers. Information about buffers than were&amp;nbsp;&amp;nbsp;not freed are shown.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Press enter, please ...&lt;br /&gt;
&lt;br /&gt;
Dataflow:FaultFuzzee, (-,22) foo(): 100 bytes allocated&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,31) foo(): 200 bytes allocated&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,40) foo(): 300 bytes allocated&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,49) foo(): 400 bytes allocated&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,58) foo(): 500 bytes allocated&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,24) DllMain(): Need start faulttest_sub_1000&lt;br /&gt;
 Dataflow:MaiwayDataflow, (-,73) SetupFaultInjectors(): functionAddress: 10001290, processID: 0xbc8, functionName: malloc, moduleName: C:\Work\svn\build\Release\bin\test\FaultTest.exe&lt;br /&gt;
 Memory allocation. 10 bytes in no file at 1379074(0x150b02)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,22) foo(): 10 bytes allocated&lt;br /&gt;
 Memory allocation. 20 bytes in no file at 1379138(0x150b42)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,31) foo(): 20 bytes allocated&lt;br /&gt;
 Memory allocation. 30 bytes in no file at 1379234(0x150ba2)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,40) foo(): 30 bytes allocated&lt;br /&gt;
 Memory allocation. 40 bytes in no file at 1379330(0x150c02)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,49) foo(): 40 bytes allocated&lt;br /&gt;
 Memory allocation. 50 bytes in no file at 1379426(0x150c62)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,58) foo(): 50 bytes allocated&lt;br /&gt;
 g_mode 1&lt;br /&gt;
 g_currentIteration 0&lt;br /&gt;
 g_totalCounter 5&lt;br /&gt;
 g_currentAllocation 0&lt;br /&gt;
 Memory allocation. 10 bytes in no file at 1379074(0x150b02)&lt;br /&gt;
 Make fault inject in&lt;br /&gt;
 File: no file, line 1379074&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,18) foo(): Error! error allocating a&lt;br /&gt;
 g_mode 1&lt;br /&gt;
 g_currentIteration 1&lt;br /&gt;
 g_totalCounter 5&lt;br /&gt;
 g_currentAllocation 1&lt;br /&gt;
 Memory allocation. 10 bytes in no file at 1379074(0x150b02)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,22) foo(): 10 bytes allocated&lt;br /&gt;
 Memory allocation. 20 bytes in no file at 1379138(0x150b42)&lt;br /&gt;
 Make fault inject in&lt;br /&gt;
 File: no file, line 1379138&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,27) foo(): Error! error allocating b&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F2CD0 size 10&lt;br /&gt;
 allocated at line 1379074 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,33) DllMain(): Fault! Assertion failed: !FreeAllMemory()&lt;br /&gt;
 g_mode 1&lt;br /&gt;
 g_currentIteration 2&lt;br /&gt;
 g_totalCounter 5&lt;br /&gt;
 g_currentAllocation 2&lt;br /&gt;
 Memory allocation. 10 bytes in no file at 1379074(0x150b02)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,22) foo(): 10 bytes allocated&lt;br /&gt;
 Memory allocation. 20 bytes in no file at 1379138(0x150b42)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,31) foo(): 20 bytes allocated&lt;br /&gt;
 Memory allocation. 30 bytes in no file at 1379234(0x150ba2)&lt;br /&gt;
 Make fault inject in&lt;br /&gt;
 File: no file, line 1379234&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,36) foo(): Error! error allocating c&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F42D8 size 20&lt;br /&gt;
 allocated at line 1379138 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F2CD0 size 10&lt;br /&gt;
 allocated at line 1379074 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,33) DllMain(): Fault! Assertion failed: !FreeAllMemory()&lt;br /&gt;
 g_mode 1&lt;br /&gt;
 g_currentIteration 3&lt;br /&gt;
 g_totalCounter 5&lt;br /&gt;
 g_currentAllocation 3&lt;br /&gt;
 Memory allocation. 10 bytes in no file at 1379074(0x150b02)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,22) foo(): 10 bytes allocated&lt;br /&gt;
 Memory allocation. 20 bytes in no file at 1379138(0x150b42)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,31) foo(): 20 bytes allocated&lt;br /&gt;
 Memory allocation. 30 bytes in no file at 1379234(0x150ba2)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,40) foo(): 30 bytes allocated&lt;br /&gt;
 Memory allocation. 40 bytes in no file at 1379330(0x150c02)&lt;br /&gt;
 Make fault inject in&lt;br /&gt;
 File: no file, line 1379330&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,45) foo(): Error! error allocating d&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F4430 size 30&lt;br /&gt;
 allocated at line 1379234 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F42D8 size 20&lt;br /&gt;
 allocated at line 1379138 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F2CD0 size 10&lt;br /&gt;
 allocated at line 1379074 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,33) DllMain(): Fault! Assertion failed: !FreeAllMemory()&lt;br /&gt;
 g_mode 1&lt;br /&gt;
 g_currentIteration 4&lt;br /&gt;
 g_totalCounter 5&lt;br /&gt;
 g_currentAllocation 4&lt;br /&gt;
 Memory allocation. 10 bytes in no file at 1379074(0x150b02)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,22) foo(): 10 bytes allocated&lt;br /&gt;
 Memory allocation. 20 bytes in no file at 1379138(0x150b42)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,31) foo(): 20 bytes allocated&lt;br /&gt;
 Memory allocation. 30 bytes in no file at 1379234(0x150ba2)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,40) foo(): 30 bytes allocated&lt;br /&gt;
 Memory allocation. 40 bytes in no file at 1379330(0x150c02)&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,49) foo(): 40 bytes allocated&lt;br /&gt;
 Memory allocation. 50 bytes in no file at 1379426(0x150c62)&lt;br /&gt;
 Make fault inject in&lt;br /&gt;
 File: no file, line 1379426&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,54) foo(): Error! error allocating e&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F4590 size 40&lt;br /&gt;
 allocated at line 1379330 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F4430 size 30&lt;br /&gt;
 allocated at line 1379234 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F42D8 size 20&lt;br /&gt;
 allocated at line 1379138 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Memory chunk:&lt;br /&gt;
 begin from 003F2CD0 size 10&lt;br /&gt;
 allocated at line 1379074 in file:&lt;br /&gt;
 no file&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,33) DllMain(): Fault! Assertion failed: !FreeAllMemory()&lt;br /&gt;
 g_mode 1&lt;br /&gt;
 g_currentIteration 5&lt;br /&gt;
 g_totalCounter 5&lt;br /&gt;
 g_currentAllocation 5&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,35) DllMain(): Done&lt;br /&gt;
 Dataflow:FaultFuzzee, (-,36) DllMain(): faulttest_sub_1000 called&lt;br /&gt;
 Dataflow:MaiwayDataflow, (-,115) CleanupFaultInjectors(): functionAddress: 78AB0233, processID: 0xbc8, functionName: malloc, moduleName: C:\Work\svn\build\Release\bin\test\FaultTest.exe&lt;br /&gt;
&lt;/code&gt;</description>
                    </item>
                <item>
            <title>Dataflow-0.2.0 released. New: in memory fuzzing means</title>
                            <pubDate>Wed, 18 Aug 2010 15:50:22 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1580/Dataflow-0.2.0_released._New:_in_memory_fuzzing_means</link>
                                        <author>artemblagodarenko &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Dataflow-0.2.0 is now available&lt;br /&gt;
&lt;br /&gt;
After month of development new features are available:&lt;br /&gt;
 1. Module’s functions recovering from binary code without any additional information;&lt;br /&gt;
 2. Binary program test SDK creation;&lt;br /&gt;
 3. Test loading to target binary program’s address space. Test executing. An analyzed binary continues executing in same mode as before test loading.&lt;br /&gt;
&lt;br /&gt;
Thus, Dataflow-0.2.0 version can be used for in memory fuzzing performing.&lt;br /&gt;
&lt;br /&gt;
You can download utility, watch screenshots&amp;nbsp;&amp;nbsp;and release history from &lt;a href=&quot;http://ufoctf.ru/ufoblog/en/maiway-2/&quot;&gt;MaiWay project home page&lt;/a&gt;. Dataflow is MaiWay project part. The &lt;a href=&quot;http://artem.ufoctf.ru/?p=164&amp;amp;lang=en&quot;&gt;Dataflow tutorial&lt;/a&gt; is also available. Enhanced features are described in &lt;a href=&quot;http://artem.ufoctf.ru/?p=339&amp;amp;lang=en&quot;&gt;The Dataflow tutorial. Part 2&lt;/a&gt;. Please, feel free send bug reports, suggestions etc. to authors.&lt;br /&gt;
&lt;br /&gt;
In short.&lt;br /&gt;
&lt;br /&gt;
You can generate functions prototypes from binary module that looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;int ( __cdecl *functionstest2_sub_1120__)( void )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= ( int ( __cdecl * ) ( void) ) 0x401120;&lt;br /&gt;
&lt;br /&gt;
inline int __cdecl functionstest2_sub_1120( int a )&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; __asm{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov EBX, a&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; return functionstest2_sub_1120__( );&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
After that you can develope some tests ( may be fuzzing actions ):&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;#include &amp;quot;functionstest.h&amp;quot;&lt;br /&gt;
void StartTest( void )&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; functionstest_sub_10C0( 88, 77, 66, 55 );&lt;br /&gt;
&amp;nbsp;&amp;nbsp; functionstest_sub_1080( 33, 44, 55, 66 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
BOOL APIENTRY DllMain( HMODULE hModule,&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;&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; DWORD&amp;nbsp;&amp;nbsp;ul_reason_for_call,&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;&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; LPVOID lpReserved&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
void StartTest( void )&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; switch (ul_reason_for_call)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case DLL_PROCESS_ATTACH:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartTest();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case DLL_THREAD_ATTACH:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case DLL_THREAD_DETACH:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case DLL_PROCESS_DETACH:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return TRUE;&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Buid it and execute in analyzed program address space with one click ( 3 clicks in deed :) ).&lt;br /&gt;
&lt;br /&gt;
 &lt;img src=&quot;http://artem.ufoctf.ru/wp-content/uploads/2010/08/pict2_4.jpg&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
Test executed, module's internal functions are fuzzed. After that program countinues its normal execution.&lt;br /&gt;
&lt;br /&gt;
Thanks for attention :)</description>
                    </item>
                <item>
            <title>Common function prototype</title>
                            <pubDate>Tue, 27 Jul 2010 12:24:26 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1571/Common_function_prototype</link>
                                        <author>artemblagodarenko &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Some ideas about automatic function prototype recovery in&lt;br /&gt;
&lt;a href=&quot;http://artem.ufoctf.ru/?p=247&amp;amp;lang=en&quot;&gt;http://artem.ufoctf.ru/?p=247&amp;amp;lang=en&lt;/a&gt;</description>
                    </item>
                <item>
            <title>The first public release of Dataflow utility is available</title>
                            <pubDate>Thu, 15 Jul 2010 09:40:06 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1565/The_first_public_release_of_Dataflow_utility_is_available</link>
                                        <author>artemblagodarenko &lt;email-suppressed@example.com&gt;</author>
                                                    <description>The first public release is Dataflow-0.1.1. You can download utility, watch screenshots &nbsp;and release history from MaiWay project home page.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://ufoctf.ru/ufoblog/en/maiway-2&quot;&gt;http://ufoctf.ru/ufoblog/en/maiway-2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Dataflow is MaiWay project part. The Dataflow tutorial is also available from &lt;br /&gt;
&lt;a href=&quot;http://artem.ufoctf.ru/?p=164&amp;amp;lang=en&quot;&gt;http://artem.ufoctf.ru/?p=164&amp;amp;lang=en&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Please, feel free send bug reports, suggestions etc. to authors.</description>
                    </item>
            </channel>
</rss>
