<?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> upx3.03 unpack self  MessageBox Code</title>
                            <pubDate>Fri, 23 Sep 2011 12:41:22 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1711/_upx3.03_unpack_self__MessageBox_Code</link>
                                        <author>UnpackMe &lt;email-suppressed@example.com&gt;</author>
                                                    <description>Hello Everyone!This Is one UnpackMe,Use upx3.03 Target,Self Analyze ,Write Unpacker Code,This No Is one General Unpack Code.Pelloc Compile,Recovery Windows Extension Option!&lt;br /&gt;
Code:&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;upx.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#ifndef _IMAGEHLP_H &lt;br /&gt;
#include &amp;quot;imagehlp.h&amp;quot;&lt;br /&gt;
#pragma comment ( lib, &amp;quot;imagehlp.lib&amp;quot; )&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
IMAGE_DOS_HEADER *DosHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;			//DOS&Iacute;&middot;&lt;br /&gt;
IMAGE_NT_HEADERS *NtHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL;			//NT&Iacute;&middot;&lt;br /&gt;
IMAGE_FILE_HEADER *FileHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;		//&Icirc;&Auml;&frac14;&thorn;&Iacute;&middot;&lt;br /&gt;
IMAGE_OPTIONAL_HEADER32 *OptHeader = NULL;	//&iquest;&Eacute;&Ntilde;&iexcl;&Iacute;&middot;&lt;br /&gt;
IMAGE_SECTION_HEADER&amp;nbsp;&amp;nbsp;*SecHeader&amp;nbsp;&amp;nbsp; =NULL;&lt;br /&gt;
IMAGE_IMPORT_DESCRIPTOR *pIID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;		//&Ecirc;&yacute;&frac34;&Yacute;&Auml;&iquest;&Acirc;&frac14;&lt;br /&gt;
DWORD dwImportBase;&lt;br /&gt;
PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;GetDosHeader(LPVOID ImageBase)&lt;br /&gt;
{&lt;br /&gt;
//////////////////////////////&frac12;&aacute;&sup1;&sup1;&Eacute;&ugrave;&Atilde;&divide;&lt;br /&gt;
	PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;pDosHeader = NULL;&lt;br /&gt;
/////////////////////////////&raquo;&ntilde;&micro;&Atilde;DosHeader&frac12;&aacute;&sup1;&sup1;&lt;br /&gt;
	pDosHeader = (PIMAGE_DOS_HEADER)ImageBase;&lt;br /&gt;
	return pDosHeader;&lt;br /&gt;
}&lt;br /&gt;
PIMAGE_NT_HEADERS&amp;nbsp;&amp;nbsp;GetNtHeader(LPVOID&amp;nbsp;&amp;nbsp;ImageBase) &lt;br /&gt;
{&lt;br /&gt;
//////////////////////////////&frac12;&aacute;&sup1;&sup1;&Eacute;&ugrave;&Atilde;&divide;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;pDosHeader = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_NT_HEADERS&amp;nbsp;&amp;nbsp;pNtHeader&amp;nbsp;&amp;nbsp;= NULL;&lt;br /&gt;
/////////////////////////////&raquo;&ntilde;&micro;&Atilde;NtHeader&frac12;&aacute;&sup1;&sup1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pDosHeader = (PIMAGE_DOS_HEADER)ImageBase;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pNtHeader = (PIMAGE_NT_HEADERS32)((DWORD)pDosHeader+pDosHeader-&amp;gt;e_lfanew);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pNtHeader;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
PIMAGE_FILE_HEADER GetFileHeader(LPVOID&amp;nbsp;&amp;nbsp;ImageBase)&lt;br /&gt;
{&lt;br /&gt;
//////////////////////////////&frac12;&aacute;&sup1;&sup1;&Eacute;&ugrave;&Atilde;&divide;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;pDosHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_NT_HEADERS&amp;nbsp;&amp;nbsp;pNtHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_FILE_HEADER&amp;nbsp;&amp;nbsp;pFileHeader&amp;nbsp;&amp;nbsp; = NULL;&lt;br /&gt;
/////////////////////////////&raquo;&ntilde;&micro;&Atilde;FileHeader&frac12;&aacute;&sup1;&sup1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pDosHeader = (PIMAGE_DOS_HEADER)ImageBase;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pNtHeader = (PIMAGE_NT_HEADERS32)((DWORD)pDosHeader+pDosHeader-&amp;gt;e_lfanew);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pFileHeader =(PIMAGE_FILE_HEADER)&amp;amp;pNtHeader-&amp;gt;FileHeader;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;nbsp;pFileHeader;&lt;br /&gt;
}&lt;br /&gt;
PIMAGE_OPTIONAL_HEADER&amp;nbsp;&amp;nbsp;GetOptionalHeader(LPVOID&amp;nbsp;&amp;nbsp;ImageBase)&lt;br /&gt;
{&lt;br /&gt;
//////////////////////////////&frac12;&aacute;&sup1;&sup1;&Eacute;&ugrave;&Atilde;&divide;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;pDosHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_NT_HEADERS&amp;nbsp;&amp;nbsp;pNtHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_OPTIONAL_HEADER&amp;nbsp;&amp;nbsp;pOptionHeader = NULL;&lt;br /&gt;
/////////////////////////////&raquo;&ntilde;&micro;&Atilde;OptionalHeader&frac12;&aacute;&sup1;&sup1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pDosHeader = (PIMAGE_DOS_HEADER)ImageBase;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pNtHeader = (PIMAGE_NT_HEADERS32)((DWORD)pDosHeader+pDosHeader-&amp;gt;e_lfanew);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pOptionHeader = (PIMAGE_OPTIONAL_HEADER32)&amp;amp;pNtHeader-&amp;gt;OptionalHeader;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;nbsp;pOptionHeader;&lt;br /&gt;
}&lt;br /&gt;
PIMAGE_SECTION_HEADER GetSectionHeader(LPVOID ImageBase)&lt;br /&gt;
{&lt;br /&gt;
//////////////////////////////&frac12;&aacute;&sup1;&sup1;&Eacute;&ugrave;&Atilde;&divide;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;pDosHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_NT_HEADERS&amp;nbsp;&amp;nbsp;pNtHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_OPTIONAL_HEADER&amp;nbsp;&amp;nbsp;pOptionHeader = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_FILE_HEADER&amp;nbsp;&amp;nbsp;pFileHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_SECTION_HEADER pSecHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;&lt;br /&gt;
/////////////////////////////&raquo;&ntilde;&micro;&Atilde;SectionHeader&frac12;&aacute;&sup1;&sup1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pDosHeader = (PIMAGE_DOS_HEADER)ImageBase;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pNtHeader = (PIMAGE_NT_HEADERS32)((DWORD)pDosHeader+pDosHeader-&amp;gt;e_lfanew);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pFileHeader =(PIMAGE_FILE_HEADER)&amp;amp;pNtHeader-&amp;gt;FileHeader; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;pOptionHeader = (PIMAGE_OPTIONAL_HEADER)&amp;amp;pNtHeader-&amp;gt;OptionalHeader;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pSecHeader =(PIMAGE_SECTION_HEADER)((LPBYTE)pOptionHeader + pFileHeader-&amp;gt;SizeOfOptionalHeader);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return pSecHeader;&lt;br /&gt;
}&lt;br /&gt;
PIMAGE_IMPORT_DESCRIPTOR&amp;nbsp;&amp;nbsp;GetFirstImportDesc(LPVOID&amp;nbsp;&amp;nbsp;ImageBase)&lt;br /&gt;
{&lt;br /&gt;
//////////////////////////////&frac12;&aacute;&sup1;&sup1;&Eacute;&ugrave;&Atilde;&divide;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;pDosHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_NT_HEADERS&amp;nbsp;&amp;nbsp;pNtHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_OPTIONAL_HEADER&amp;nbsp;&amp;nbsp;pOptionHeader = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_FILE_HEADER&amp;nbsp;&amp;nbsp;pFileHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NULL;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_SECTION_HEADER pSecHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= NULL;&lt;br /&gt;
/////////////////////////////&raquo;&ntilde;&micro;&Atilde;OptionalHeader&frac12;&aacute;&sup1;&sup1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pDosHeader = (PIMAGE_DOS_HEADER)ImageBase;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pNtHeader = (PIMAGE_NT_HEADERS32)((DWORD)pDosHeader+pDosHeader-&amp;gt;e_lfanew);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pFileHeader =(PIMAGE_FILE_HEADER)&amp;amp;pNtHeader-&amp;gt;FileHeader; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;pOptionHeader = (PIMAGE_OPTIONAL_HEADER)&amp;amp;pNtHeader-&amp;gt;OptionalHeader;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pSecHeader =(PIMAGE_SECTION_HEADER)((LPBYTE)pOptionHeader + pFileHeader-&amp;gt;SizeOfOptionalHeader);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;DWORD pImportOffset = (pOptionHeader-&amp;gt;DataDirectory[1]).VirtualAddress ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;PIMAGE_IMPORT_DESCRIPTOR pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)&lt;br /&gt;
	ImageRvaToVa (pNtHeader,ImageBase,pImportOffset,&amp;amp;pSecHeader ) ; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;nbsp;pImportDesc;&lt;br /&gt;
}&lt;br /&gt;
////////////////////&plusmn;&Egrave;&frac12;&Iuml;&Ecirc;&Ccedil;&middot;&ntilde;&Icirc;&ordf;PE&Icirc;&Auml;&frac14;&thorn;&lt;br /&gt;
BOOL MemCmpPe(LPVOID ImageBase)&lt;br /&gt;
{&lt;br /&gt;
	PIMAGE_DOS_HEADER&amp;nbsp;&amp;nbsp;pDosHeader =(PIMAGE_DOS_HEADER)ImageBase;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PIMAGE_NT_HEADERS&amp;nbsp;&amp;nbsp;pNtHeader&amp;nbsp;&amp;nbsp;=(PIMAGE_NT_HEADERS32)((DWORD)pDosHeader+pDosHeader-&amp;gt;e_lfanew);&lt;br /&gt;
	while(!ImageBase)&lt;br /&gt;
		return FALSE;&lt;br /&gt;
	while(pDosHeader-&amp;gt;e_magic!=IMAGE_DOS_SIGNATURE)&lt;br /&gt;
		return FALSE;&lt;br /&gt;
	while(pNtHeader-&amp;gt;Signature!=IMAGE_NT_SIGNATURE)&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return FALSE;&lt;br /&gt;
	return TRUE;&lt;br /&gt;
}&lt;br /&gt;
///////////////////////////&para;&Aacute;&Egrave;&iexcl;&Icirc;&Auml;&frac14;&thorn;&micro;&frac12;&Auml;&Uacute;&acute;&aelig;&lt;br /&gt;
LPVOID MapFileToMemory(char *szFileName)&lt;br /&gt;
{&lt;br /&gt;
	HANDLE hFile = CreateFile(szFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);&lt;br /&gt;
	if (hFile==INVALID_HANDLE_VALUE)&lt;br /&gt;
	{&lt;br /&gt;
		MessageBox(NULL,&amp;quot;&sup2;&raquo;&Auml;&Uuml;&acute;&ograve;&iquest;&ordf;&Icirc;&Auml;&frac14;&thorn;&amp;quot;,&amp;quot;&Igrave;&aacute;&Ecirc;&frac34;&amp;quot;,MB_OK);&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
	HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READONLY | SEC_COMMIT, 0, 0, NULL);&lt;br /&gt;
	LPVOID pMap = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0);&lt;br /&gt;
	return pMap;&lt;br /&gt;
}&lt;br /&gt;
///////////////////////////&raquo;&ntilde;&micro;&Atilde;&para;&Ocirc;&AElig;&euml;&Ouml;&micro;&lt;br /&gt;
DWORD Alignment(DWORD Size,DWORD Align)&lt;br /&gt;
{&lt;br /&gt;
	if(Size%Align!=0)&lt;br /&gt;
		return&amp;nbsp;&amp;nbsp;(Size/Align+1)*Align;&lt;br /&gt;
	return Size;&lt;br /&gt;
}&lt;br /&gt;
/////////////////////&ETH;&THORN;&cedil;&acute;&Ccedil;&oslash;&para;&Icirc;&Atilde;&ucirc;&times;&Ouml;&lt;br /&gt;
void ModifySecName(PIMAGE_SECTION_HEADER SecHeader,DWORD SecNum)&lt;br /&gt;
{&lt;br /&gt;
	int i=0;&lt;br /&gt;
	while(i&amp;lt;SecNum)&lt;br /&gt;
	{&lt;br /&gt;
		strcpy((char*)SecHeader[i].Name,&amp;quot;UnPack&amp;quot;);&lt;br /&gt;
		i++;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
///////////////////&ETH;&THORN;&cedil;&acute;&Ecirc;&auml;&Egrave;&euml;&plusmn;&iacute;&lt;br /&gt;
void ModifyImport(DWORD SecOffset,DWORD SecOffsetA,DWORD SecOffsetB)&lt;br /&gt;
{&lt;br /&gt;
	DWORD SecOffsetC=SecOffset+SecOffsetA;&lt;br /&gt;
	DWORD ImPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=*(DWORD*)SecOffsetC;&lt;br /&gt;
	while(ImPort)&lt;br /&gt;
	{&lt;br /&gt;
		DWORD FuncAddr&amp;nbsp;&amp;nbsp;=*(DWORD*)(SecOffsetC+4);&lt;br /&gt;
		HMODULE hMod=LoadLibraryA((char*)SecOffsetB+ImPort);&lt;br /&gt;
		FuncAddr+=SecOffset;&lt;br /&gt;
		SecOffsetC+=8;&lt;br /&gt;
		while(*(BYTE*)SecOffsetC!=0)&lt;br /&gt;
		{&lt;br /&gt;
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;++SecOffsetC;&lt;br /&gt;
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(DWORD*)FuncAddr=(DWORD)GetProcAddress(hMod,(char*)SecOffsetC);&lt;br /&gt;
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FuncAddr+=4;&lt;br /&gt;
			SecOffsetC+=strlen((char*)SecOffsetC)+1;&lt;br /&gt;
		}&lt;br /&gt;
		++SecOffsetC;&lt;br /&gt;
		ImPort=*(DWORD*)SecOffsetC;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
////////////&Oacute;&Atilde;&Oacute;&Uacute;&acute;&brvbar;&Agrave;&iacute;0xE8,0xE9//////////////C&Oacute;&iuml;&Ntilde;&Ocirc;&plusmn;&iacute;&Ecirc;&frac34;///////////////&Oacute;&ETH;&micro;&atilde;&Icirc;&Ecirc;&Igrave;&acirc;&lt;br /&gt;
void ModifyCall(BYTE *Start,int Size)&lt;br /&gt;
{&lt;br /&gt;
	BYTE DB;&lt;br /&gt;
	DWORD DDb;&lt;br /&gt;
	DWORD FixAddr=(DWORD)Start;&lt;br /&gt;
	WORD DWA;&lt;br /&gt;
	BYTE Hi8;&lt;br /&gt;
	WORD Lo8;&lt;br /&gt;
	while(Size)&lt;br /&gt;
	{&lt;br /&gt;
		DB=*(BYTE*)Start-0xE8;&lt;br /&gt;
		++Start;&lt;br /&gt;
		if(DB&amp;gt;1||*Start!=3)&lt;br /&gt;
		{&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		DDb=*(DWORD*)Start;&lt;br /&gt;
		DWA=DDb&amp;amp;0x0ffff;&lt;br /&gt;
		DWA&amp;gt;&amp;gt;=8;&lt;br /&gt;
		DDb&amp;amp;=0xffff0000;&lt;br /&gt;
		DDb|=DWA;&lt;br /&gt;
		DDb=((DDb&amp;lt;&amp;lt;0x10)|(DDb&amp;gt;&amp;gt;0x10));&lt;br /&gt;
		DWA=DDb&amp;amp;0x0ffff;&lt;br /&gt;
		Lo8=((WORD)DWA&amp;lt;&amp;lt;8);&lt;br /&gt;
		Hi8=(BYTE)(DWA&amp;gt;&amp;gt;8);&lt;br /&gt;
		DWA=(Lo8+Hi8);&lt;br /&gt;
		DDb&amp;amp;=0xffff0000;&lt;br /&gt;
		DDb|=DWA;&lt;br /&gt;
		DDb-=(DWORD)Start;&lt;br /&gt;
		*(DWORD*)Start=DDb+FixAddr;&lt;br /&gt;
		Start+=4;&lt;br /&gt;
		--Size;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
///////////////////&Eacute;&egrave;&Ouml;&Atilde;&Ccedil;&oslash;&para;&Icirc;&para;&Ocirc;&AElig;&euml;&lt;br /&gt;
void SetSectionAlignment(IMAGE_SECTION_HEADER&amp;nbsp;&amp;nbsp;*TempSecHeader,int SectionNum,DWORD SecValue)&lt;br /&gt;
{&lt;br /&gt;
	int AlignValue=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=0;i&amp;lt;SectionNum;i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
		AlignValue=Alignment(TempSecHeader-&amp;gt;Misc.VirtualSize, SecValue);&lt;br /&gt;
		TempSecHeader-&amp;gt;SizeOfRawData&amp;nbsp;&amp;nbsp; =AlignValue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TempSecHeader-&amp;gt;Misc.VirtualSize=AlignValue;		&lt;br /&gt;
		TempSecHeader-&amp;gt;PointerToRawData=TempSecHeader-&amp;gt;VirtualAddress;&lt;br /&gt;
		TempSecHeader++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;
}&lt;br /&gt;
BYTE PCode;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&Ntilde;&sup1;&Euml;&otilde;&ordm;&oacute;&micro;&Auml;&acute;&uacute;&Acirc;&euml;&micro;&Auml;&Icirc;&Auml;&frac14;&thorn;&Ouml;&cedil;&Otilde;&euml;&lt;br /&gt;
BYTE *pImage;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&ETH;&Acirc;&micro;&Auml;&Oacute;&sup3;&Iuml;&ntilde;&iquest;&Otilde;&frac14;&auml;&lt;br /&gt;
DWORD ImageSize;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&frac14;&Oacute;&iquest;&Ccedil;&ordm;&oacute;&micro;&Auml;&Oacute;&sup3;&Iuml;&ntilde;&acute;&oacute;&ETH;&iexcl;&lt;br /&gt;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)&lt;br /&gt;
{&lt;br /&gt;
	DWORD dwWrite;&lt;br /&gt;
	LPBYTE lpFile=(LPBYTE)MapFileToMemory(&amp;quot;Test.exe&amp;quot;);&lt;br /&gt;
	if(MemCmpPe(lpFile)==FALSE)&lt;br /&gt;
	{&lt;br /&gt;
		MessageBoxA(NULL,&amp;quot;PE&Ccedil;&copy;&Atilde;&ucirc;&Icirc;&THORN;&ETH;&sect;&amp;quot;,&amp;quot;&Igrave;&aacute;&Ecirc;&frac34;&amp;quot;,MB_OK);&lt;br /&gt;
	}&lt;br /&gt;
	DosHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=GetDosHeader(lpFile);&lt;br /&gt;
	NtHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =GetNtHeader(lpFile);&lt;br /&gt;
	FileHeader&amp;nbsp;&amp;nbsp; =GetFileHeader(lpFile);&lt;br /&gt;
	OptHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=GetOptionalHeader(lpFile);&lt;br /&gt;
	SecHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=GetSectionHeader(lpFile);&lt;br /&gt;
	pIID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =GetFirstImportDesc(lpFile);&lt;br /&gt;
/////////////////////&acute;&brvbar;&Agrave;&iacute;&micro;&Uacute;&Ograve;&raquo;&cedil;&ouml;&Ccedil;&oslash;&para;&Icirc;&pound;&not;&sup2;&cent;&cedil;&acute;&Ouml;&AElig;&micro;&frac12;&Auml;&Uacute;&acute;&aelig;&Ouml;&ETH;&lt;br /&gt;
	ImageSize=Alignment(OptHeader-&amp;gt;SizeOfImage,OptHeader-&amp;gt;SectionAlignment);//&raquo;&ntilde;&micro;&Atilde;&frac14;&Oacute;&iquest;&Ccedil;&ordm;&oacute;&micro;&Auml;&Oacute;&sup3;&Iuml;&ntilde;&acute;&oacute;&ETH;&iexcl;&pound;&not;&Ograve;&sup2;&frac34;&Iacute;&Ecirc;&Ccedil;&ETH;&eacute;&Auml;&acirc;&iquest;&Otilde;&frac14;&auml;&acute;&oacute;&ETH;&iexcl;&lt;br /&gt;
	pImage =VirtualAlloc(NULL,ImageSize,MEM_COMMIT,PAGE_READWRITE);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&middot;&Ouml;&Aring;&auml;&ETH;&Acirc;&micro;&Auml;PE&Oacute;&sup3;&Iuml;&ntilde;&iquest;&Otilde;&frac14;&auml;&lt;br /&gt;
	memcpy(pImage,lpFile,OptHeader-&amp;gt;SizeOfHeaders);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&cedil;&acute;&Ouml;&AElig;PE&Iacute;&middot;&micro;&frac12;&ETH;&Acirc;&middot;&Ouml;&Aring;&auml;&micro;&Auml;&Oacute;&sup3;&Iuml;&ntilde;&iquest;&Oslash;&frac14;&thorn;&Agrave;&iuml;&Atilde;&aelig;&lt;br /&gt;
	IMAGE_SECTION_HEADER&amp;nbsp;&amp;nbsp;*TempSecHeader&amp;nbsp;&amp;nbsp; =SecHeader;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&Aacute;&Ugrave;&Ecirc;&plusmn;&Ccedil;&oslash;&para;&Icirc;&frac12;&aacute;&sup1;&sup1;&lt;br /&gt;
////////////////////&Ograve;&Agrave;&acute;&Icirc;&cedil;&acute;&Ouml;&AElig;&Ccedil;&oslash;&para;&Icirc;&micro;&frac12;&ETH;&Acirc;&micro;&Auml;PE&micro;&Auml;&Ccedil;&oslash;&para;&Icirc;&Agrave;&iuml;&Atilde;&aelig;&Egrave;&yen;&lt;br /&gt;
	for(int i=0;i&amp;lt;FileHeader-&amp;gt;NumberOfSections;i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&Ograve;&Agrave;&acute;&Icirc;&cedil;&acute;&Ouml;&AElig;&acute;&uacute;&Acirc;&euml;&micro;&frac12;&ETH;&Acirc;&micro;&Auml;&Oacute;&sup3;&Iuml;&ntilde;&iquest;&Otilde;&frac14;&auml;&Agrave;&iuml;&Atilde;&aelig;&lt;br /&gt;
	{&lt;br /&gt;
		memcpy(pImage+TempSecHeader-&amp;gt;VirtualAddress,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&frac12;&Oacute;&Ecirc;&Otilde;&acute;&uacute;&Acirc;&euml;&micro;&Auml;&Oacute;&sup3;&Iuml;&ntilde;&micro;&Oslash;&Ouml;&middot;&lt;br /&gt;
			lpFile+TempSecHeader-&amp;gt;PointerToRawData,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&cedil;&acute;&Ouml;&AElig;&acute;&uacute;&Acirc;&euml;&micro;&Auml;&Icirc;&Auml;&frac14;&thorn;&AElig;&laquo;&Ograve;&AElig;&micro;&Oslash;&Ouml;&middot;&lt;br /&gt;
			Alignment(TempSecHeader-&amp;gt;SizeOfRawData,OptHeader-&amp;gt;FileAlignment)//&cedil;&acute;&Ouml;&AElig;&acute;&uacute;&Acirc;&euml;&acute;&oacute;&ETH;&iexcl;&Ograve;&Ocirc;&Icirc;&Auml;&frac14;&thorn;&acute;&oacute;&ETH;&iexcl;&ordm;&Iacute;&para;&Ocirc;&AElig;&euml;&frac14;&AElig;&Euml;&atilde;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
		++TempSecHeader;&lt;br /&gt;
	}&lt;br /&gt;
////////////////////&ETH;&THORN;&Otilde;&yacute;Image&Agrave;&iuml;&Atilde;&aelig;&micro;&Auml;PE&Iacute;&middot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IMAGE_NT_HEADERS *NewNtHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = GetNtHeader(pImage);	//NT&Iacute;&middot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IMAGE_SECTION_HEADER&amp;nbsp;&amp;nbsp;*NewSecHeader&amp;nbsp;&amp;nbsp; = GetSectionHeader(pImage);&lt;br /&gt;
	IMAGE_OPTIONAL_HEADER *NewOptHeader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=GetOptionalHeader(pImage);&lt;br /&gt;
////////////////////&Eacute;&egrave;&Ouml;&Atilde;&Egrave;&euml;&iquest;&Uacute;&micro;&atilde;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NewNtHeader-&amp;gt;OptionalHeader.AddressOfEntryPoint=0x1020;&lt;br /&gt;
////////////////////&Icirc;&Auml;&frac14;&thorn;&para;&Ocirc;&AElig;&euml;&middot;&frac12;&Ecirc;&frac12;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NewNtHeader-&amp;gt;OptionalHeader.SizeOfImage&amp;nbsp;&amp;nbsp; =Alignment(NewOptHeader-&amp;gt;SizeOfImage,NewOptHeader-&amp;gt;SectionAlignment);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NewNtHeader-&amp;gt;OptionalHeader.FileAlignment =NewOptHeader-&amp;gt;FileAlignment;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NewNtHeader-&amp;gt;OptionalHeader.SizeOfHeaders =NewSecHeader-&amp;gt;VirtualAddress; &lt;br /&gt;
////////////////////&ETH;&THORN;&Otilde;&yacute;&Ccedil;&oslash;&para;&Icirc;&Icirc;&raquo;&Ouml;&Atilde;&ordm;&Iacute;&acute;&oacute;&ETH;&iexcl; &lt;br /&gt;
	SetSectionAlignment(NewSecHeader,NewNtHeader-&amp;gt;FileHeader.NumberOfSections,0x1000);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&ETH;&THORN;&cedil;&acute;&Ccedil;&oslash;&para;&Icirc;&para;&Ocirc;&AElig;&euml;&lt;br /&gt;
////////////////////&iquest;&ordf;&Ecirc;&frac14;&frac12;&acirc;&Ntilde;&sup1;&acute;&uacute;&Acirc;&euml;&lt;br /&gt;
	UnCompress(pImage+SecHeader-&amp;gt;VirtualAddress,(BYTE*)lpFile+SecHeader-&amp;gt;PointerToRawData);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&acute;&Oacute;&Ouml;&raquo;&para;&Aacute;&Auml;&Uacute;&acute;&aelig;&Ouml;&ETH;&micro;&Atilde;&Ntilde;&sup1;&Euml;&otilde;&acute;&uacute;&Acirc;&euml;&frac12;&acirc;&Ntilde;&sup1;&raquo;&Oslash;&Oacute;&sup3;&Iuml;&ntilde;&iquest;&Otilde;&frac14;&auml;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; //DisposureE8(pImage+SecHeader-&amp;gt;VirtualAddress,0x84);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&Iuml;&Ouml;&Ocirc;&Uacute;&acute;&brvbar;&Agrave;&iacute;E8&lt;br /&gt;
	ModifyCall(pImage+SecHeader-&amp;gt;VirtualAddress,0x84);&lt;br /&gt;
////////////////////&ETH;&THORN;&cedil;&acute;&Ecirc;&auml;&Egrave;&euml;&plusmn;&iacute;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModifyImport((DWORD)pImage+0x1000,0x9000,(DWORD)pImage+0xC000); &lt;br /&gt;
////////////////////&ETH;&THORN;&cedil;&Auml;&Ccedil;&oslash;&para;&Icirc;&Atilde;&ucirc;&times;&Ouml;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModifySecName(GetSectionHeader(pImage),3);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
///////////////////&ETH;&acute;&Egrave;&euml;&Icirc;&Auml;&frac14;&thorn;&lt;br /&gt;
	HANDLE Handle=CreateFile(&amp;quot;UnpackMe.exe&amp;quot;, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);&lt;br /&gt;
	SetFilePointer(Handle,0,0,FILE_BEGIN);&lt;br /&gt;
	WriteFile(Handle,pImage,ImageSize,&amp;amp;dwWrite,NULL);&lt;br /&gt;
	MessageBox(NULL,&amp;quot;&Iacute;&Ntilde;&iquest;&Ccedil;&sup3;&Eacute;&sup1;&brvbar;&amp;quot;,&amp;quot;UnpackMe&amp;quot;,MB_OK);&lt;br /&gt;
	return TRUE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In Which,UnCompress Is Quote Other Code,Code As Follows,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
#define True 1&lt;br /&gt;
&lt;br /&gt;
int getbit(unsigned __int64 *pcom_dword, unsigned char **ppsrc)&lt;br /&gt;
{&lt;br /&gt;
	unsigned __int64 temp;&lt;br /&gt;
	//int result;&lt;br /&gt;
	*pcom_dword &amp;amp;= 0xffffffff;&lt;br /&gt;
	(*pcom_dword) *= 2;&lt;br /&gt;
	if(!(*pcom_dword &amp;amp; 0xffffffff))&lt;br /&gt;
	{&lt;br /&gt;
		*pcom_dword = *(unsigned int *)(*ppsrc);&lt;br /&gt;
		temp = (unsigned int)(*ppsrc);&lt;br /&gt;
		temp -= (unsigned int)(-4);&lt;br /&gt;
		(*ppsrc) += 4;&lt;br /&gt;
		*pcom_dword = ((temp &amp;gt;&amp;gt; 32) &amp;amp; 1) + *pcom_dword + *pcom_dword;&lt;br /&gt;
	}&lt;br /&gt;
	return (int)((*pcom_dword &amp;gt;&amp;gt; 32) &amp;amp; 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int UnCompress(void *dst, void *src)&lt;br /&gt;
{&lt;br /&gt;
	unsigned char *pdst = dst;&lt;br /&gt;
	unsigned char *psrc = src;&lt;br /&gt;
	unsigned char *xdst = NULL;&lt;br /&gt;
	unsigned __int64 com_dword = 0;&lt;br /&gt;
	unsigned __int64 off = 0;&lt;br /&gt;
	unsigned __int64 temp = 0;&lt;br /&gt;
	unsigned int length = 0;&lt;br /&gt;
	unsigned int last_off = (unsigned int)-1;&lt;br /&gt;
	int flag = 0;&lt;br /&gt;
&lt;br /&gt;
	com_dword = *(unsigned int *)psrc;&lt;br /&gt;
	temp = (unsigned int)psrc;&lt;br /&gt;
	psrc += 4;&lt;br /&gt;
	temp -= (unsigned int)(-4);&lt;br /&gt;
	com_dword = com_dword * 2 + ((temp &amp;gt;&amp;gt; 32) &amp;amp; 1);&lt;br /&gt;
&lt;br /&gt;
	if(((com_dword &amp;gt;&amp;gt; 32) &amp;amp; 1))&lt;br /&gt;
	{&lt;br /&gt;
		do&lt;br /&gt;
		{&lt;br /&gt;
			*pdst++ = *psrc++;&lt;br /&gt;
		}while(getbit(&amp;amp;com_dword, &amp;amp;psrc));&lt;br /&gt;
	}&lt;br /&gt;
	while(True)&lt;br /&gt;
	{&lt;br /&gt;
		if(flag)&lt;br /&gt;
		{&lt;br /&gt;
			while(getbit(&amp;amp;com_dword, &amp;amp;psrc))&lt;br /&gt;
			{&lt;br /&gt;
				*pdst++ = *psrc++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		flag = 1;&lt;br /&gt;
		off = 1;&lt;br /&gt;
		do&lt;br /&gt;
		{&lt;br /&gt;
			do&lt;br /&gt;
			{&lt;br /&gt;
				off = off * 2 + getbit(&amp;amp;com_dword, &amp;amp;psrc);&lt;br /&gt;
			}while(com_dword =com_dword + com_dword, ((com_dword &amp;gt;&amp;gt; 32) &amp;amp; 1) == 0);&lt;br /&gt;
			if(com_dword &amp;amp; 0xffffffff)&lt;br /&gt;
			{&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			com_dword = *(unsigned int *)psrc;&lt;br /&gt;
			temp = (unsigned int)psrc;&lt;br /&gt;
			psrc += 4;&lt;br /&gt;
			temp -= (unsigned int)(-4);			&lt;br /&gt;
		}while(com_dword = com_dword + com_dword + ((temp &amp;gt;&amp;gt; 32) &amp;amp; 1), ((com_dword &amp;gt;&amp;gt; 32) &amp;amp; 1) == 0);&lt;br /&gt;
&lt;br /&gt;
		length = 0;&lt;br /&gt;
		off -= 3;&lt;br /&gt;
		if(off &amp;gt;&amp;gt; 32 == 0)&lt;br /&gt;
		{&lt;br /&gt;
			off &amp;lt;&amp;lt;= 8;&lt;br /&gt;
			off = off + *psrc++;&lt;br /&gt;
			if((off = (off &amp;amp; 0xffffffff) ^ 0xffffffff)&amp;nbsp;&amp;nbsp;== 0)&lt;br /&gt;
			{&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			last_off = (unsigned int)off;&lt;br /&gt;
		}&lt;br /&gt;
		length = length + length + getbit(&amp;amp;com_dword, &amp;amp;psrc);&lt;br /&gt;
		length = length + length + getbit(&amp;amp;com_dword, &amp;amp;psrc);&lt;br /&gt;
		if(length == 0)&lt;br /&gt;
		{&lt;br /&gt;
			length++;&lt;br /&gt;
			do&lt;br /&gt;
			{&lt;br /&gt;
				do&lt;br /&gt;
				{&lt;br /&gt;
					length = length + length + getbit(&amp;amp;com_dword, &amp;amp;psrc);&lt;br /&gt;
				}while(com_dword = com_dword + com_dword, ((com_dword &amp;gt;&amp;gt; 32) &amp;amp; 1) == 0);&lt;br /&gt;
				if(com_dword &amp;amp; 0xffffffff)&lt;br /&gt;
				{&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				com_dword = *(unsigned int *)psrc;&lt;br /&gt;
				temp = (unsigned int)psrc;&lt;br /&gt;
				psrc += 4;&lt;br /&gt;
				temp -= (unsigned int)(-4);	&lt;br /&gt;
			}while(com_dword = com_dword + com_dword + ((temp &amp;gt;&amp;gt; 32) &amp;amp; 1), ((com_dword &amp;gt;&amp;gt; 32) &amp;amp; 1) == 0);&lt;br /&gt;
			length += 2;&lt;br /&gt;
		}&lt;br /&gt;
		length++;&lt;br /&gt;
		if(last_off &amp;lt; (unsigned int)(-0xd00))&lt;br /&gt;
			length++;&lt;br /&gt;
		xdst = last_off + pdst;&lt;br /&gt;
&lt;br /&gt;
		temp = last_off;&lt;br /&gt;
		temp -= (unsigned int)(-4);&lt;br /&gt;
		if(temp != 0 &amp;amp;&amp;amp; ((temp &amp;gt;&amp;gt; 32) &amp;amp; 1) == 0)&lt;br /&gt;
		{&lt;br /&gt;
			for(;length &amp;gt; 0; length--)&lt;br /&gt;
			{&lt;br /&gt;
				*pdst++ = *xdst++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			for(;;)&lt;br /&gt;
			{&lt;br /&gt;
				*(unsigned int *)pdst = *(unsigned int *)xdst;&lt;br /&gt;
				pdst += 4;&lt;br /&gt;
				xdst += 4;&lt;br /&gt;
				temp = length;&lt;br /&gt;
				length -= 4;&lt;br /&gt;
				temp -= 4;&lt;br /&gt;
				if(temp == 0 || ((temp &amp;gt;&amp;gt; 32) &amp;amp; 1) == 1)&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			pdst += length;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return pdst - (unsigned char *)dst;&lt;br /&gt;
}&lt;br /&gt;
Thank You Support! e-Mail: 458452846@QQ.COM</description>
                    </item>
            </channel>
</rss>
