<?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>Reverse Engineering / Bug hunting trainings in Amsterdam</title>
                            <pubDate>Mon, 09 Mar 2009 08:55:00 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1411/Reverse_Engineering_/_Bug_hunting_trainings_in_Amsterdam</link>
                                        <author>halvar &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Hey all,&lt;br /&gt;&lt;br /&gt;I havent given a reverse engineering trainings class in Amsterdam for a few years, but this year is different :-) -- I will be at BH Amsterdam, and there are still seats open in the trainings class for April 14th and 15th.&lt;br /&gt;&lt;br /&gt;What will be done in the course ? Well, for one thing, well go bug-hunting in some interesting piece of code. Furthermore, well talk quite a bit about C++ and its effects in the binary. Well do a fair bit of differential debugging, some more bug-hunting, and a lot of IDA automation. Questions like&lt;br /&gt;&lt;ul&gt;&lt;li&gt;given a C++ executable, how do I recover an inheritance diagram of the classes ?&lt;/li&gt;&lt;li&gt;given a big and ugly executable, how do I find the interesting places to focus on ?&lt;/li&gt;&lt;li&gt;how do I make sure IDAPython and NaviPython make my life easier ?&lt;/li&gt;&lt;/ul&gt;will be treated thoroughly.&lt;br /&gt;&lt;br /&gt;So, if you still have some trainings/travel budget left in spite of the crisis, you can find more&lt;br /&gt;details &lt;a href=&quot;http://www.blackhat.com/html/bh-europe-09/train-bh-eu-09-hf.html&quot;&gt;here.&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://blogger.googleusercontent.com/tracker/14114712-5356296309982457711?l=addxorrol.blogspot.com&quot; /&gt;</description>
                    </item>
                <item>
            <title>Diffing x86 vs ARM code</title>
                            <pubDate>Wed, 04 Mar 2009 12:01:00 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1408/Diffing_x86_vs_ARM_code</link>
                                        <author>halvar &lt;email-suppressed@example.com&gt;</author>
                                                    <description>I posted a while ago about the new DiffDeluxe comparison engine, and that wed release it in Q1 2009. Well, were almost there, the engine is now in beta. If you are a BinDiff user and wish to give the new engine a try, send mail to info@zynamics.com :-)&lt;br /&gt;&lt;br /&gt;I mentioned in my last post on the topic that DiffDeluxe was designed to facilitate symbol porting, and to allow comparisons between executables that are &quot;far away&quot; from each other.&lt;br /&gt;&lt;br /&gt;In the last post I wrote about Mozilla JS engine vs. Acrobat EScript.dll. Today I am going to try something slightly crazier: In order to evaluate how well these matching algorithms work, we will be diffing an executable that was compiled for ARM against a very similar executable compiled for x86.&lt;br /&gt;&lt;br /&gt;My coworker Vincenzo is a big fan of all things OSX, and he brought up the idea of comparing x86 and ARM versions of the OSX dynamic loader -- namely the disassembly of dyld on the iphone against the disassembly of dyld on OSX.&lt;br /&gt;&lt;br /&gt;Now, the first voices are going to yell: &quot;You have names for all functions, BinDiffing is easy then!&quot;. Well, true, but we will run DiffDeluxe &lt;span&gt;without&lt;/span&gt; taking the names into account, and then just using the names to validate the results.&lt;br /&gt;&lt;br /&gt;The two executables have 704 (x86) and 618 (ARM) functions respectively. Without name&lt;br /&gt;matching, we match 345 functions. Inspecting the symbols, we see that we have matched&lt;br /&gt;160 of these functions in full accordance with the symbols. Lets have a look at some of the details:&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_e24imFzpOVw/Sa7u8YLxOYI/AAAAAAAAAG0/e76hQSFjS2I/s1600-h/iphon1..PNG&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_e24imFzpOVw/Sa7u8YLxOYI/AAAAAAAAAG0/e76hQSFjS2I/s320/iphon1..PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5309443731767769474&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_e24imFzpOVw/Sa7vDK3Fz3I/AAAAAAAAAG8/8u1yD-6lS0g/s1600-h/iphon2.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_e24imFzpOVw/Sa7vDK3Fz3I/AAAAAAAAAG8/8u1yD-6lS0g/s320/iphon2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5309443848450461554&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Cute, eh ? Lets look at some more...&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_e24imFzpOVw/Sa7vPduiN-I/AAAAAAAAAHE/JwOZ8A9xwDo/s1600-h/iphon3.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_e24imFzpOVw/Sa7vPduiN-I/AAAAAAAAAHE/JwOZ8A9xwDo/s320/iphon3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5309444059673278434&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_e24imFzpOVw/Sa7vdJvTEYI/AAAAAAAAAHM/y9DnJ48_JCY/s1600-h/iphon4.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_e24imFzpOVw/Sa7vdJvTEYI/AAAAAAAAAHM/y9DnJ48_JCY/s320/iphon4.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5309444294825939330&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;It is almost surprising how far one can get without actually looking at the instruction semantics.&lt;br /&gt;&lt;br /&gt;If we take the names into account, matching functions becomes easy, but matching basic blocks properly ends up the difficulty. With name matching enabled, DiffDeluxe matches 3809 basic blocks, out of 7904 respective 5196.&lt;br /&gt;&lt;br /&gt;So to summarize: The structural comparison is sufficiently strong to yield some useful results even accross two different CPUs. While there is still (a good amount) of room for improvement, I am quite happy with these results so far :-)&lt;br /&gt;&lt;br /&gt;So, if you want to beta, and you already use BinDiff, drop us a line !&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://blogger.googleusercontent.com/tracker/14114712-7684828242901105463?l=addxorrol.blogspot.com&quot; /&gt;</description>
                    </item>
                <item>
            <title>Washington DC, Trainings, Demos :-)</title>
                            <pubDate>Thu, 05 Feb 2009 09:41:00 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1376/Washington_DC,_Trainings,_Demos_:-)</link>
                                        <author>halvar &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Hey all,&lt;br /&gt;&lt;br /&gt;I will be in Washington DC from the 16th to the 20th of February. Amongst other things, I will be teaching a &lt;a href=&quot;http://www.blackhat.com/html/bh-dc-09/train-bh-dc-09-hf.html&quot;&gt;course&lt;/a&gt; at Blackhat DC. The economic crisis is clearly hitting -- e.g. there are still seats available. We will also get around to using some of the nice features of BinNavi v2 in class, which I am looking forwards to.&lt;br /&gt;&lt;br /&gt;Now, aside from the course: If you are in the DC area and interested in a product demo for BinDiff (and the upcoming DiffDeluxe), BinNavi v2 (including REIL), or the latest VxClass (now available as service and virtual appliance), do not hesitate to drop a line to &lt;a href=&quot;mailto:info@zynamics.com&quot;&gt;info@zynamics.com&lt;/a&gt; :-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://blogger.googleusercontent.com/tracker/14114712-810943343939788545?l=addxorrol.blogspot.com&quot; /&gt;</description>
                    </item>
                <item>
            <title>Correction: Clam *does* have some unpacking support</title>
                            <pubDate>Mon, 05 Jan 2009 01:49:00 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1348/Correction:_Clam_*does*_have_some_unpacking_support</link>
                                        <author>halvar &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Correction of my last post: It appears that Clam has *some* unpacking support. It is not as comprehensive as some of us would like, but progress is being made :-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://blogger.googleusercontent.com/tracker/14114712-6456479691874428241?l=addxorrol.blogspot.com&quot; /&gt;</description>
                    </item>
                <item>
            <title>ClamAV and unpackers</title>
                            <pubDate>Sun, 04 Jan 2009 09:41:00 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1349/ClamAV_and_unpackers</link>
                                        <author>halvar &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Hey all,&lt;br /&gt;&lt;br /&gt;this might be a rather odd question, but given the (unfortunate) fact that ClamAV cant unpack&lt;br /&gt;even the simplest packers, has nobody ever contemplated writing packer-specific unpackers&lt;br /&gt;for ClamAV ?&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Halvar&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://blogger.googleusercontent.com/tracker/14114712-3102335840249419831?l=addxorrol.blogspot.com&quot; /&gt;</description>
                    </item>
            </channel>
</rss>
