<?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>Export All relational ASM in idapro (Just Copied)</title>
                            <pubDate>Wed, 09 Jan 2008 05:49:11 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1016/Export_All_relational_ASM_in_idapro_(Just_Copied)</link>
                                        <author>serenade &lt;email-suppressed@example.com&gt;</author>
                                                    <description>#include &amp;quot;idc.idc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
static ElementExist(arrayid,size,val)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;auto i,v;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for(i=0;i&amp;lt;size;i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v=GetArrayElement(AR_LONG,arrayid,i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(v==val)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
}&lt;br /&gt;
static GenFuncIns(st,arrayid,size)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;auto start,end,i,ins,x,xt,funcend;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;start=st;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;end=FindFuncEnd(start);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for(i=start;i&amp;lt;end;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ins=GetDisasm(i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(x=Rfirst(i);x!=BADADDR;x=Rnext(i,x))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xt=XrefType();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(xt == fl_CN &amp;amp;&amp;amp; !ElementExist(arrayid,size,x))&lt;br /&gt;
&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;SetArrayLong(arrayid,size,x);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i=ItemEnd(i);/*FindCode(i,1);*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Message(form(&amp;quot;%s\r\n&amp;quot;,ins));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return size;&lt;br /&gt;
}&lt;br /&gt;
static main()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;auto arrayid,size,pos,st,file,funcend,path;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;st=ScreenEA();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;path = GetIdbPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;path = substr(path, 0, strlen(path) - 4) + &amp;quot;Part.asm&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;file=fopen(path,&amp;quot;w+&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if(st==BADADDR)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Warning(&amp;quot;Please put the cursor at a function start.&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;arrayid=CreateArray(&amp;quot;gen_func_ins&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if(arrayid&amp;lt;0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arrayid=GetArrayId(&amp;quot;gen_func_ins&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pos=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;SetArrayLong(arrayid,pos,st);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;size=1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for(pos=0;pos&amp;lt;size;pos++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st=GetArrayElement(AR_LONG,arrayid,pos);&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Message(form(&amp;quot;proc:%8.8x\r\n&amp;quot;,st));&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;funcend=FindFuncEnd(st);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (funcend!=BADADDR)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Message(&amp;quot;Writing the function to %s \n&amp;quot;,path);&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GenerateFile(OFILE_ASM,file, st,funcend, 0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Message(form(&amp;quot;proc:%8.8x Write false\r\n&amp;quot;,st)); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size=GenFuncIns(st,arrayid,size);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;DeleteArray(arrayid);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;fclose(file);&lt;br /&gt;
Message(&amp;quot;All done, exiting...\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
</description>
                    </item>
            </channel>
</rss>
