<?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>A wonderful MASM teaching page</title>
                            <pubDate>Mon, 02 Jul 2007 19:35:42 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/793/A_wonderful_MASM_teaching_page</link>
                                        <author>buguty &lt;email-suppressed@example.com&gt;</author>
                                                    <description>&lt;a href=&quot;http://web.sau.edu/lilliskevinm/csci240/masmdocs/&quot;&gt;http://web.sau.edu/lilliskevinm/csci240/masmdocs/&lt;/a&gt;</description>
                    </item>
                <item>
            <title>My Life is get hard?</title>
                            <pubDate>Fri, 29 Jun 2007 07:58:13 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/789/My_Life_is_get_hard?</link>
                                        <author>buguty &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Everything for me goes bad.But on the other hand,hope is a good thing.</description>
                    </item>
                <item>
            <title>My GetProcAddress</title>
                            <pubDate>Thu, 28 Sep 2006 21:54:47 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/458/My_GetProcAddress</link>
                                        <author>buguty &lt;email-suppressed@example.com&gt;</author>
                                                    <description>This func. could only find API's Address by name. -_-!!!&lt;br /&gt;
&lt;br /&gt;
This is source:&lt;br /&gt;
&lt;br /&gt;
typedef void(*MyFunc)(void*);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //only use bu me *_^&lt;br /&gt;
&lt;br /&gt;
MyFunc GetProcAddr(char* pFuncName,HMODULE hDll)&lt;br /&gt;
{&lt;br /&gt;
	unsigned long hash;&lt;br /&gt;
&lt;br /&gt;
	pExploit	RetVanlue;&lt;br /&gt;
&lt;br /&gt;
	_asm&lt;br /&gt;
	{&lt;br /&gt;
		mov		esi,pFuncName&lt;br /&gt;
		xor		ebx,ebx&lt;br /&gt;
CmputeHash:&lt;br /&gt;
		xor		eax,eax&lt;br /&gt;
		lodsb&lt;br /&gt;
		cmp		al,0x0a&lt;br /&gt;
		jz		CmputeHash&lt;br /&gt;
		cmp		al,ah&lt;br /&gt;
		jz		FindStart&lt;br /&gt;
		ror		ebx,7&lt;br /&gt;
		add		ebx,eax&lt;br /&gt;
		jmp		CmputeHash&lt;br /&gt;
&lt;br /&gt;
FindStart:&lt;br /&gt;
		mov		hash,ebx&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
		mov		ebx,hDll								;base to eax&lt;br /&gt;
		mov		edi,[ebx+0x3c]&lt;br /&gt;
		mov		edi,[edi+ebx+0x78]&lt;br /&gt;
		add		edi,ebx									;edi==Addr of IMAGE_EXPORT_DIRECTORY&lt;br /&gt;
&lt;br /&gt;
		mov		edx,[edi+0x20]&lt;br /&gt;
		push	esi&lt;br /&gt;
		mov		esi,dword ptr [edx+ebx]&lt;br /&gt;
		add		esi,ebx									;esi--&amp;gt;names&lt;br /&gt;
&lt;br /&gt;
		xor		edx,edx									;counter...&lt;br /&gt;
		dec		edx&lt;br /&gt;
		mov		ecx,[edi+0x18]							;Number of Names of Funcs&lt;br /&gt;
&lt;br /&gt;
		push	ebx&lt;br /&gt;
&lt;br /&gt;
GetHash:&lt;br /&gt;
		dec		ecx&lt;br /&gt;
		inc		edx&lt;br /&gt;
		xor		ebx,ebx&lt;br /&gt;
&lt;br /&gt;
GetHashLoop:&lt;br /&gt;
		xor		eax,eax&lt;br /&gt;
		lodsb&lt;br /&gt;
		cmp		ah,al&lt;br /&gt;
		jz		FindByHash&lt;br /&gt;
		ror		ebx,7&lt;br /&gt;
		add		ebx,eax&lt;br /&gt;
		jmp		GetHashLoop&lt;br /&gt;
&lt;br /&gt;
FindByHash:&lt;br /&gt;
		mov		eax,hash&lt;br /&gt;
		cmp		eax,ebx&lt;br /&gt;
		jz		HashFind&lt;br /&gt;
		cmp		ecx,0&lt;br /&gt;
		jnz		GetHash&lt;br /&gt;
		jmp		UnFindAndEnd&lt;br /&gt;
&lt;br /&gt;
HashFind:&lt;br /&gt;
		mov		eax,[edi+0x24]							;Get AddressOfNameOrdinals's Address&lt;br /&gt;
		pop		ebx&lt;br /&gt;
		add		eax,ebx&lt;br /&gt;
		movzx	ax,word ptr [eax+edx*2]&lt;br /&gt;
		mov		edx,[edi+0x1c]&lt;br /&gt;
		add		edx,ebx&lt;br /&gt;
		and		eax,0x0ffff&lt;br /&gt;
		mov		eax,[edx+eax*4]&lt;br /&gt;
		add		eax,ebx&lt;br /&gt;
		jmp		FindAndEnd&lt;br /&gt;
&lt;br /&gt;
UnFindAndEnd:&lt;br /&gt;
		pop		esi&lt;br /&gt;
		xor		eax,eax&lt;br /&gt;
FindAndEnd:&lt;br /&gt;
		mov		RetVanlue,eax&lt;br /&gt;
		pop		esi&lt;br /&gt;
	}&lt;br /&gt;
	return RetVanlue;&lt;br /&gt;
}</description>
                    </item>
                <item>
            <title>My IDA 5.0</title>
                            <pubDate>Fri, 22 Sep 2006 19:49:38 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/423/My_IDA_5.0</link>
                                        <author>buguty &lt;email-suppressed@example.com&gt;</author>
                                                    <description>When I use IDA 5.0 for the first time.I was completely attracted by it.Expet it can not recognise some native functions when I reversing kerneal32.dll...&lt;br /&gt;
&lt;br /&gt;
I've tried to slove it. but...I havn't achieve it...&lt;br /&gt;
&lt;br /&gt;
So sad...</description>
                    </item>
            </channel>
</rss>
