<?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>Generic tracer 0.5 beta</title>
                            <pubDate>Sun, 16 Jan 2011 09:08:46 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1644/Generic_tracer_0.5_beta</link>
                                        <author>modest &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Generic Tracer 0.5 beta is published for testing.&lt;br /&gt;
&lt;br /&gt;
Among fixes and one small feature (see &lt;a href=&quot;http://conus.info/gt/gt05beta/manual/changelog.txt&quot;&gt;changelog.txt&lt;/a&gt; file), major feature I added is TRACE.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;TRACE&lt;/b&gt;: trace each instruction in function and collect all interesting values from registers and memory. After execution, all that information is saved to process.exe.idc, process.exe.txt, process.exe_clear.idc files. .idc-files are IDA scripts, .txt file is grepable by grep, awk and sed.&lt;br /&gt;
&lt;br /&gt;
For example, let's take add_member function from &lt;a href=&quot;http://research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html&quot;&gt;Using Uninitialized Memory for Fun and Profit&lt;/a&gt; article:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
int dense[256];&lt;br /&gt;
int dense_next=0;&lt;br /&gt;
int sparse[256];&lt;br /&gt;
&lt;br /&gt;
void add_member(int i)&lt;br /&gt;
{&lt;br /&gt;
	dense[dense_next]=i;&lt;br /&gt;
	sparse[ i ]=dense_next;&lt;br /&gt;
	dense_next++;&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main ()&lt;br /&gt;
{&lt;br /&gt;
	add_member(123);&lt;br /&gt;
	add_member(5);&lt;br /&gt;
	add_member(71);&lt;br /&gt;
	add_member(99);&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Let's compile it and run tracing on add_member function (determine function address in IDA before):&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;gt -l:trace_test4.exe bpf=0x00401000,trace&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
We'll get trace_test4.exe.txt file:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
0x401000, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;
0x401001, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;
0x401003, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, [0x403818]=0..3&lt;br /&gt;
0x401008, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, [EBP+8]=5, 0x47('G'), 0x63('c'), 0x7b('{')&lt;br /&gt;
0x40100b, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, ECX=5, 0x47('G'), 0x63('c'), 0x7b('{')&lt;br /&gt;
0x401012, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, [EBP+8]=5, 0x47('G'), 0x63('c'), 0x7b('{')&lt;br /&gt;
0x401015, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, [0x403818]=0..3&lt;br /&gt;
0x40101a, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, EAX=0..3&lt;br /&gt;
0x401021, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, [0x403818]=0..3&lt;br /&gt;
0x401027, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, ECX=0..3&lt;br /&gt;
0x40102a, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, ECX=1..4&lt;br /&gt;
0x401030, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;
0x401031, e=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, EAX=0..3&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;e&lt;/i&gt; field in how many times was executed this instruction.&lt;br /&gt;
&lt;br /&gt;
Let's execute trace_test4.exe.idc script in IDA and we'll see:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://conus.info/gt/gt05beta/manual/trace_test4.png&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
Now it is much simpler to understand how this function work during execution.&lt;br /&gt;
&lt;br /&gt;
Executed instructions are highlighed by blue color. Not-executed instructions are leaved white.&lt;br /&gt;
&lt;br /&gt;
If you need to clear all comments and highlight, execute trace_test4.exe_clear.idc script.&lt;br /&gt;
&lt;br /&gt;
All collected information in IDA-script may be reduced to shorten form like &lt;i&gt;EAX=[ 64 unique items. min=0xbca6eb7, max=0xffffffed ]&lt;/i&gt; (because IDA has comment size limitation). On contrary, everything is saved to text file without shortening, that is why resulting text file may be sometimes pretty big.&lt;br /&gt;
&lt;br /&gt;
One problem of TRACE feature that it is slow, however, functions from system DLLs are skipped (system DLL is that DLL residing in %SystemRoot%) Another problem is that things like exceptions, setjmp/longjmp and other unexpected codeflow alterations are not correctly handled so far.&lt;br /&gt;
&lt;br /&gt;
One more problem is that this feature is only available in x86 (because only x86-disassembler currently present in gt project)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://conus.info/gt/gt05beta/manual/gt.html#bpf_ex_trace&quot;&gt;More examples&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://conus.info/gt/gt05beta/gt05beta.rar&quot;&gt;Download gt executables, source code and manuals.&lt;/a&gt;&lt;br /&gt;
</description>
                    </item>
                <item>
            <title>Making C compiler generate obfuscated code</title>
                            <pubDate>Tue, 07 Dec 2010 08:55:43 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1632/Making_C_compiler_generate_obfuscated_code</link>
                                        <author>modest &lt;email-suppressed@example.com&gt;</author>
                                                    <description>A customer of mine asked whether it is possible to protect his software from reverse engineering. I &lt;a href=&quot;http://stackoverflow.com/questions/4111808/c-c-compiler-generating-obfuscated-code&quot;&gt;didn't found&lt;/a&gt; any C/C++ compiler which was able to produce obfuscated code making it hard to reverse engineer and complicate the use of such tools as &lt;a href=&quot;http://www.hex-rays.com/decompiler.shtml&quot;&gt;Hex-Rays Decompiler&lt;/a&gt;, so I made a little attempt to hack &lt;a href=&quot;http://bellard.org/tcc/&quot;&gt;Tiny C&lt;/a&gt; compiler's codegenerator.&lt;br /&gt;
&lt;br /&gt;
I patched it so it produces a lot of random noise code between effective code. Of course, resulting code will work much slower. But in real life, we can obfuscate only critical parts of code containing algorithms we don't want to be easily leaked. Of course, it is virtually impossible to protect any code from reverse engineering, but it is possible to make it much more difficult.&lt;br /&gt;
&lt;br /&gt;
Example: simple function:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
int a (int a, int b)&lt;br /&gt;
{&lt;br /&gt;
	return a + b * 4;&lt;br /&gt;
};&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
On output...&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
a&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; proc near&lt;br /&gt;
&lt;br /&gt;
var_CD500B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= byte ptr -0CD500Bh&lt;br /&gt;
arg_0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = dword ptr&amp;nbsp;&amp;nbsp;8&lt;br /&gt;
arg_4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = dword ptr&amp;nbsp;&amp;nbsp;0Ch&lt;br /&gt;
arg_1D364BDE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= byte ptr&amp;nbsp;&amp;nbsp;1D364BE6h&lt;br /&gt;
&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;nop&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;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebp&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebp, esp&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;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esp, 0&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;nop&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;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, ebx&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, 99B7A34Ah&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, 0EC06E7ACh&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, [esi+63h]&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, [ebp+arg_0]&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;and&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, ebx&lt;br /&gt;
&lt;br /&gt;
loc_800001F:&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, [ebp+arg_1D364BDE]&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 9EF81F3Eh&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, [ebx+3Eh]&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, [esi]&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, 0FD6D5D47h&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;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, edx&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, [ebp+var_CD500B]&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, [eax]&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, [ebp+arg_4] ; *&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;shl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; *&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, eax&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;adc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, edx&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, [ebp+arg_0]&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;adc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, ecx&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;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, ecx&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;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, eax&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, [esp+ecx*8]&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, 29262C66h&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 0CC18D2C4h&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 0FDB56490h&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, 9E709D5Eh&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, 73805EBFh&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, eax&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;or&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ecx, eax&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 7339AD0Eh&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, 2CA8725Ah&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, [edi+esi*8]&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 87684A89h&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 52A74759h&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;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, edx&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;jnz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; short loc_800001F&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 0CCA90613h&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;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, eax&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, 0C6699FDh&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 0A8B272A1h&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, eax&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;sbb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, ebx&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, [ebp+arg_0] ; *&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;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx, eax&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; *&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;or&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;edx, ebx&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, 47257B14h&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, ecx&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;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, edx&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, 9E3E878Ah&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx, 0DAB5E429h&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, 0ABFDB94Eh&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;adc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, ebx&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;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, ebx&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;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, [ebx+75A1EF29h]&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;or&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;edx, edx&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;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, ecx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; *&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;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $+5&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;leave&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;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx&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;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ebx&lt;br /&gt;
a&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; endp&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
(effective code marked with asterisk)&lt;br /&gt;
&lt;br /&gt;
One funny thing is that now the compiler uses random number generator. &lt;i&gt;Almost all good computer programs contain at least one random-number generator.&lt;/i&gt; (&lt;a href=&quot;http://fortunes.cat-v.org/plan_9/&quot;&gt;fortune file&lt;/a&gt; in plan 9 OS).&lt;br /&gt;
&lt;br /&gt;
Here is also my &lt;a href=&quot;http://crackmes.de/users/yonkie/yonkies_keygenme_4/&quot;&gt;crackme&lt;/a&gt; I created for testing. It was eventually reversed, though.&lt;br /&gt;
&lt;br /&gt;
For those who are interested:&lt;br /&gt;
&lt;a href=&quot;http://conus.info/stuff/tcc-obfuscate/tcc-0.9.25-diff&quot;&gt;Patch for Tiny C version 0.9.25&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://conus.info/stuff/tcc-obfuscate/tcc-0.9.25-my-src.rar&quot;&gt;Full source code patched&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://conus.info/stuff/tcc-obfuscate/tcc-0.9.25-my-win32-bin.zip&quot;&gt;Tiny C 0.9.25 patched win32 executables&lt;/a&gt;</description>
                    </item>
                <item>
            <title>Generic tracer 0.4</title>
                            <pubDate>Sat, 12 Jun 2010 16:44:34 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1561/Generic_tracer_0.4</link>
                                        <author>modest &lt;email-suppressed@example.com&gt;</author>
                                                    <description>New version is out.&lt;br /&gt;
&lt;br /&gt;
changelog:&lt;br /&gt;
&lt;br /&gt;
* FPU registers support at BPX breakpoint &lt;br /&gt;
new command line options: &lt;br /&gt;
-fpu_always - always show FPU registers at BPX breakpoint &lt;br /&gt;
-fpu_never&amp;nbsp;&amp;nbsp;- never show FPU registers at BPX breakpoint &lt;br /&gt;
In SET option of BPX command now it is possible to use FPU registers: &lt;br /&gt;
ST0..ST7, for example: &lt;br /&gt;
bpx=program.exe!address,set(st0,123.4) &lt;br /&gt;
Remember: gt never modify FPU tag word registor as well as not modify &lt;br /&gt;
TOP register, so, if some register was marked as &amp;quot;empty&amp;quot; and gt set &lt;br /&gt;
some value there, it will remain marked &amp;quot;empty&amp;quot;. &lt;br /&gt;
if the float-point number is also NaN, MMX register contents will be &lt;br /&gt;
dumped too &lt;br /&gt;
new command line option: &lt;br /&gt;
-dump_xmm - dump XMM registers state at BPX breakpoint &lt;br /&gt;
* now we attach to all processes with process name specified &lt;br /&gt;
* symbol defined in address can also contain &amp;quot;+ofs&amp;quot; suffix, where &lt;br /&gt;
&amp;quot;ofs&amp;quot; is decimal or hexadecimal number with &amp;quot;0x&amp;quot; prefix &lt;br /&gt;
for example: &amp;quot;bpx=kernel32.dll!writefile+0x5&amp;quot; or &amp;quot;bpx=file.exe!base &lt;br /&gt;
+0x1234&amp;quot; where base is PE file base. &lt;br /&gt;
* PDB files support. &lt;br /&gt;
compile your program with /Zi option in MSVC and get PDB debug file &lt;br /&gt;
for it &lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
&lt;br /&gt;
gt is command-line utility for performing simple debugging tasks.&lt;br /&gt;
&lt;br /&gt;
Major features:&lt;br /&gt;
&lt;br /&gt;
*Set breakpoint on function execution, track function arguments and result.&lt;br /&gt;
*Set breakpoint on arbitrary point, track CPU registers state and alter them.&lt;br /&gt;
*Set breakpoint on memory cell access and track all accesses to it.&lt;br /&gt;
Minor features:&lt;br /&gt;
&lt;br /&gt;
*Set breakpoint by address, symbol name or bytemask.&lt;br /&gt;
*Unicode string detection in function arguments.&lt;br /&gt;
*Both x86 and x64 support.&lt;br /&gt;
*Oracle RDBMS .SYM files support.&lt;br /&gt;
*Source code included.&lt;br /&gt;
&lt;br /&gt;
Homepage (manual, downloads..)&lt;br /&gt;
&lt;a href=&quot;http://conus.info/gt/&quot;&gt;http://conus.info/gt/&lt;/a&gt;</description>
                    </item>
                <item>
            <title>Generitc tracer 0.3</title>
                            <pubDate>Sat, 05 Dec 2009 02:56:40 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1526/Generitc_tracer_0.3</link>
                                        <author>modest &lt;email-suppressed@example.com&gt;</author>
                                                    <description>New version is out.&lt;br /&gt;
&lt;br /&gt;
gt is command-line utility for performing simple debugging tasks.&lt;br /&gt;
&lt;br /&gt;
Major features:&lt;br /&gt;
&lt;br /&gt;
*Set breakpoint on function execution, track function arguments and result.&lt;br /&gt;
*Set breakpoint on arbitrary point, track CPU registers state and alter them.&lt;br /&gt;
*Set breakpoint on memory cell access and track all accesses to it.&lt;br /&gt;
Minor features:&lt;br /&gt;
&lt;br /&gt;
*Set breakpoint by address, symbol name or bytemask.&lt;br /&gt;
*Unicode string detection in function arguments.&lt;br /&gt;
*Both x86 and x64 support.&lt;br /&gt;
*Oracle RDBMS .SYM files support.&lt;br /&gt;
*Source code included.&lt;br /&gt;
&lt;br /&gt;
Homepage (manual, downloads..)&lt;br /&gt;
&lt;a href=&quot;http://conus.info/gt/&quot;&gt;http://conus.info/gt/&lt;/a&gt;</description>
                    </item>
                <item>
            <title>generic tracer</title>
                            <pubDate>Sun, 24 May 2009 08:54:29 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1456/generic_tracer</link>
                                        <author>modest &lt;email-suppressed@example.com&gt;</author>
                                                    <description>generic tracer - extremely simple win32 tracer&lt;br /&gt;
&lt;br /&gt;
* Main features:&lt;br /&gt;
&lt;br /&gt;
1) Setting breakpoint at any function, monitoring its arguments and return value.&lt;br /&gt;
2) Monitoring global variables access.&lt;br /&gt;
&lt;br /&gt;
In a way, it is a kind strace utility.&lt;br /&gt;
&lt;br /&gt;
Significant differences vs strace are:&lt;br /&gt;
&lt;br /&gt;
1) gt is Win32 only.&lt;br /&gt;
2) Breakpoints not just system calls, but any function.&lt;br /&gt;
3) Only 4 breakpoints, because of x86 architecture limitation.&lt;br /&gt;
4) Usage of Oracle .SYM files: ORACLE_HOME should be defined in environment.&lt;br /&gt;
&lt;br /&gt;
Homepage:&lt;br /&gt;
&lt;a href=&quot;http://conus.info/gt/&quot;&gt;http://conus.info/gt/&lt;/a&gt;&lt;br /&gt;
Readme file:&lt;br /&gt;
&lt;a href=&quot;http://conus.info/gt/gt.txt&quot;&gt;http://conus.info/gt/gt.txt&lt;/a&gt;&lt;br /&gt;
</description>
                    </item>
            </channel>
</rss>
