<?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>Exporting IDA function for IDC Script Usage</title>
                            <pubDate>Fri, 19 Jun 2009 19:35:45 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1474/Exporting_IDA_function_for_IDC_Script_Usage</link>
                                        <author>ohjeongwook &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Sometimes you want to specify additional options or to call internal function of IDA plugin that you wrote. You can use &amp;quot;set_idc_func&amp;quot; API to achive this. Here's a sample skeleton code that is showing how to make a custom function that idc script can call.&lt;br /&gt;
&lt;code&gt;char *OutputFilename;&lt;br /&gt;
static const char SendDiassemblyInfoArgs[]={VT_STR,0 };&lt;br /&gt;
static error_t idaapi SendDiassemblyInfo(value_t *argv,value_t *res)&lt;br /&gt;
{&lt;br /&gt;
	msg(&amp;quot;%s is called with arg0=%s\n&amp;quot;,argv[0].str);&lt;br /&gt;
	OutputFilename=strdup(argv[0].str);&lt;br /&gt;
	run(2);&lt;br /&gt;
	res-&amp;gt;num=1;&lt;br /&gt;
	return eOk;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int idaapi init(void)&lt;br /&gt;
{&lt;br /&gt;
	if ( inf.filetype == f_ELF ) return PLUGIN_SKIP;&lt;br /&gt;
&lt;br /&gt;
	set_idc_func(&amp;quot;SendDiassemblyInfo&amp;quot;,SendDiassemblyInfo,SendDiassemblyInfoArgs);&lt;br /&gt;
	return PLUGIN_KEEP;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void idaapi term(void)&lt;br /&gt;
{&lt;br /&gt;
	set_idc_func(&amp;quot;SendDiassemblyInfo&amp;quot;,NULL,NULL);&lt;br /&gt;
}&lt;br /&gt;
From idc script, you can call the defined function as if it's a builtin API like following.&lt;br /&gt;
static main()&lt;br /&gt;
{&lt;br /&gt;
	RunPlugin(&amp;quot;DarunGrim2&amp;quot;,1);&lt;br /&gt;
	SendDiassemblyInfo(&amp;quot;disassembly.info&amp;quot;);&lt;br /&gt;
	Exit(0);&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
Simple!</description>
                    </item>
                <item>
            <title>DarunGrim2 is up</title>
                            <pubDate>Sat, 07 Feb 2009 19:03:18 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1374/DarunGrim2_is_up</link>
                                        <author>ohjeongwook &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Check this out: &lt;a href=&quot;http://www.darungrim.org/&quot;&gt;http://www.darungrim.org/&lt;/a&gt;&lt;br /&gt;
I also setup google groups to talk about darungrim and binary diffing related topics.&lt;br /&gt;
</description>
                    </item>
                <item>
            <title>DarunGrim2 is coming!</title>
                            <pubDate>Wed, 31 Dec 2008 15:43:57 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1335/DarunGrim2_is_coming!</link>
                                        <author>ohjeongwook &lt;email-suppressed@example.com&gt;</author>
                                                    <description>I'm preparing DarunGrim2 release these days.&lt;br /&gt;
It's in C++ so using less memory and CPU than original DarunGrim which is implemented in Python. The original DarunGrim is always available at origianl page(&lt;a href=&quot;http://research.eeye.com/html/tools/RT20060801-1.html&quot;&gt;http://research.eeye.com/html/tools/RT20060801-1.html&lt;/a&gt;). And it's stable and opensource.&lt;br /&gt;
&lt;br /&gt;
During the time you can evaluate Binary Differ(&lt;a href=&quot;http://code.google.com/p/binarydiffer/&quot;&gt;http://code.google.com/p/binarydiffer/&lt;/a&gt;), which is opensource and implemented in C and has no external GUI. It's been there for few months and it's in GPL, so you can do whatever you want with it.&lt;br /&gt;
&lt;br /&gt;
Here's some screenshots from Binary Differ.&lt;br /&gt;
&lt;a href=&quot;http://lh5.ggpht.com/_WcidANaFFi4/RZXSkUB6pJI/AAAAAAAAAHE/9shuhWqEQHA/s800/MS06-070.jpg&quot;&gt;http://lh5.ggpht.com/_WcidANaFFi4/RZXSkUB6pJI/AAAAAAAAAHE/9shuhWqEQHA/s800/MS06-070.jpg&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;http://lh5.ggpht.com/_WcidANaFFi4/RZXSkUB6pJI/AAAAAAAAAHE/9shuhWqEQHA/s800/MS06-070.jpg&quot; border=0 align=&quot;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
BTW, DarunGrim2 will be provided as binary only. Basically the only differences between DarunGrim2 and &amp;quot;Binary Differ&amp;quot; are the language used(C/C++) and GUI parts, and also whether they are opensource or not.&lt;br /&gt;
&lt;br /&gt;
Enjoy diffing and happy new year!&lt;br /&gt;
&lt;br /&gt;
PS. I'm giving you some Korean tips here.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DarunGrim=Darun+Grim&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Darun=Different&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Grim=Pictures&lt;br /&gt;
</description>
                    </item>
            </channel>
</rss>
