在内存中直接运行exe而不用磁盘文件做参数---一个很有意思的问题(20分)

  • 主题发起人 主题发起人 terrace
  • 开始时间 开始时间
T

terrace

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中已经用MemoryStream1.LoadFromFile('c:/fp.exe')将该fp.exe导入到了内存MemoryStream1中,是否有办法可以直接在内存中运行该fp.exe而避免用WinExec或CreateProcess来接受文件名做为参数呢?(也就是说,除了MemoryStream1.LoadFromFile('c:/fp.exe')外,不能再有c:/fp.exe出现)
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1581619
 
可以吗?<br>把地址得到,直接 Jmp 不知道可不可以?
 
直接Jmp几乎是不行的。
 
的确有意思的问题,应该可以的。 <br>大概方法应该是自己解决加载过程中的地址表(具体怎么做忘了,论坛上找找有一篇介绍世界上最小的带窗口的exe程序的文章,那个最小带窗口exe程序的源代码里有程序加载部分代码,很简单几行),然后用CreateThread或CreateRemoteThread执行。
 
哦,漏了一点,初始化时你还得自己分析PE文件头并加载所有用到的动态联结库
 
有意思,不知DLL的函数是不是一个理
 
应该可以
 
自己可以接管应用程序加载的过程<br>看看upx是怎么做的<br><br>用线程注入也是个办法,不过代码太不好写了
 
在dos下很容易的. 可是windows就麻烦点了. 因为windows的内存区是严格区分的, 数据区不可运行. 可是肯定有办法, 因为操作系统就运行程序时就要读出来. 而操作系统核心运行在ring 0, 因此我想要解决这个问题, 就要从ring 0的底层驱动程序想办法. 具体的我不会, 陈盈豪对这个熟.<br>
 
如果这个fp.exe支持重定位应该是可行的,如果不支持重定位,而它的基址与当前程序的基址没有冲突,也有可能可行。但不绝对可行。<br><br>PE格式中含有内存基址,映像尺寸,入口地址等信息。。。。。。<br>第一步,在当前进程中寻找未使用的映像尺寸大小的内存段,记下开始地址与fp.exe的基址之差。<br>第二步,分析fp.exe格式,按各节要求属性(如可执行,可读写等)申请内存,并将fp.exe各节映射至内存(注意内存映像与磁盘文件格式不同)。<br>第三步,分析fp.exe输入表,装入相关DLL并修正IAT。<br>第四步,如果基址有变,需修正重定位项。<br>第五步,创建并新线程,转到fp.exe入口。<br>。。。。。。(可能有未尽事宜)<br><br>要求熟练掌握PE格式及WINDOWS装载机理。这种编程与壳或病毒有相似处,但似乎更麻烦。<br><br>------------------------------<br>http://www.encryptpe.com
 
我就说嘛! 只有CIH的作者才能解决这种问题. [:D]
 
我非常想知道动态链接库如何在内存中直接调用。
 
没有简便的方法在内存中执行,感觉不值得这么做
 
不!很值得!楼主,您是不是想搞程序加密一类的?
 
http://www.csdn.net/develop/read_article.asp?id=18134<br>运行期间生成代码的动态执行
 
你的代码里必须是相对寻址并且不能调用WINDOWSAPI,就可以。<br>否则你必须自己编写loadlibrary这个函数,进行重定位工作。
 
关于这个问题,可能大家摸的方向不对.实际上,你不一定要用资源.用流即可.当然,你要重组节内容.大概步骤如下:根据你要运行的EXE,计算出新头,然后重新写DOS头和节表即可,这样一来运行的时候,不用释放出来,直接跳到该地址即可.<br>第一步:计算节表并填充新的EXE头<br>&nbsp; &nbsp; &nbsp; if Key&lt;&gt;nil then<br>&nbsp; &nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; &nbsp; GenerateKey(Key,KeySize);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@DosHeader,SizeOf(DosHeader));<br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@NtHeaders,SizeOf(NtHeaders));<br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@DosStubEnd,SizeOf(DosStubEnd));<br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then WriteLn(#$0D#$0A'Building DOS header ...');<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_magic:=PWord(PChar('MZ'))^;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_cblp:=$0050;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_cp:=$0002;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_cparhdr:=$0004;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_minalloc:=$000F;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_maxalloc:=$FFFF;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_sp:=$00B8;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_lfarlc:=$0040;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader.e_ovno:=$001A;<br>&nbsp; &nbsp; &nbsp; &nbsp; DosHeader._lfanew:=$0100;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then WriteLn('Building NT headers ...');<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.Signature:=PCardinal(PChar('PE'))^;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.FileHeader.Machine:=IMAGE_FILE_MACHINE_I386;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.FileHeader.NumberOfSections:=3;<br>&nbsp; &nbsp; &nbsp; &nbsp; if TlsSectionPresent then Inc(NtHeaders.FileHeader.NumberOfSections);<br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then WriteLn('Number of sections: ',NtHeaders.FileHeader.NumberOfSections);<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.FileHeader.TimeDateStamp:=Random($20000000)+$20000000;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.FileHeader.SizeOfOptionalHeader:=IMAGE_SIZEOF_NT_OPTIONAL_HEADER;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.FileHeader.Characteristics:=IMAGE_FILE_EXECUTABLE_IMAGE or IMAGE_FILE_LINE_NUMS_STRIPPED<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;or IMAGE_FILE_LOCAL_SYMS_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;or IMAGE_FILE_BYTES_REVERSED_LO or IMAGE_FILE_32BIT_MACHINE<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;or IMAGE_FILE_BYTES_REVERSED_HI;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.Magic:=IMAGE_NT_OPTIONAL_HDR_MAGIC;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.MajorLinkerVersion:=Random(9)+1;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.MinorLinkerVersion:=Random(99)+1;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SizeOfCode:=$00001000; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//may change<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.BaseOfCode:=$00001000; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//may change<br>&nbsp; &nbsp; &nbsp; &nbsp; if ReqImageBase&lt;&gt;0 then NtHeaders.OptionalHeader.ImageBase:=RoundSize(ReqImageBase,$00010000)<br>&nbsp; &nbsp; &nbsp; &nbsp; else if HostImageBase=$00400000 then NtHeaders.OptionalHeader.ImageBase:=RoundSize(HostImageBase+HostSizeOfImage+$00100000,$00010000)<br>&nbsp; &nbsp; &nbsp; &nbsp; else NtHeaders.OptionalHeader.ImageBase:=$00400000;<br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then WriteLn('ImageBase: ',IntToHex(NtHeaders.OptionalHeader.ImageBase,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SectionAlignment:=$00001000;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.FileAlignment:=$00000200; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //may change<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.MajorOperatingSystemVersion:=$0004;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.MajorSubsystemVersion:=$0004;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SizeOfHeaders:=$00000400; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //may change<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.Subsystem:=HostSubsystem;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SizeOfStackReserve:=$00100000;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SizeOfStackCommit:=$00010000; &nbsp; &nbsp; &nbsp; &nbsp; //may change<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SizeOfHeapReserve:=$00100000;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SizeOfHeapCommit:=$00010000;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.NumberOfRvaAndSizes:=$00000010;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then WriteLn(#$0D#$0A'Building .text section');<br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@CodeSection,SizeOf(CodeSection));<br>&nbsp; &nbsp; &nbsp; &nbsp; CopyMemory(@CodeSection.Name,PChar('.text'),5); &nbsp; &nbsp; &nbsp; &nbsp;//may change -&gt; CODE<br>&nbsp; &nbsp; &nbsp; &nbsp; CodeSection.Misc.VirtualSize:=$00001000; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //should change<br>&nbsp; &nbsp; &nbsp; &nbsp; CodeSection.VirtualAddress:=NtHeaders.OptionalHeader.BaseOfCode;<br>&nbsp; &nbsp; &nbsp; &nbsp; CodeSection.SizeOfRawData:=$00001000;<br>&nbsp; &nbsp; &nbsp; &nbsp; CodeSection.PointerToRawData:=NtHeaders.OptionalHeader.SizeOfHeaders;<br>&nbsp; &nbsp; &nbsp; &nbsp; CodeSection.Characteristics:=IMAGE_SCN_CNT_CODE or IMAGE_SCN_MEM_EXECUTE or IMAGE_SCN_MEM_WRITE or IMAGE_SCN_MEM_READ;<br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.text section virtual address: ',IntToHex(CodeSection.VirtualAddress,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.text section virtual size: ',IntToHex(CodeSection.Misc.VirtualSize,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn(#$0D#$0A'Building .data section');<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@DataSection,SizeOf(DataSection));<br>&nbsp; &nbsp; &nbsp; &nbsp; CopyMemory(@DataSection.Name,PChar('.data'),5); &nbsp; &nbsp; &nbsp; &nbsp;//may change -&gt; DATA<br>&nbsp; &nbsp; &nbsp; &nbsp; DataSection.Misc.VirtualSize:=RoundSize(MainSize,NtHeaders.OptionalHeader.SectionAlignment);<br>&nbsp; &nbsp; &nbsp; &nbsp; DataSection.VirtualAddress:=CodeSection.VirtualAddress+CodeSection.Misc.VirtualSize;<br>&nbsp; &nbsp; &nbsp; &nbsp; DataSection.SizeOfRawData:=RoundSize(MainSize,RawDataAlignment);<br>&nbsp; &nbsp; &nbsp; &nbsp; DataSection.PointerToRawData:=CodeSection.PointerToRawData+CodeSection.SizeOfRawData;<br>&nbsp; &nbsp; &nbsp; &nbsp; DataSection.Characteristics:=IMAGE_SCN_CNT_INITIALIZED_DATA or IMAGE_SCN_MEM_WRITE or IMAGE_SCN_MEM_READ;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.SizeOfInitializedData:=DataSection.Misc.VirtualSize;<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.BaseOfData:=DataSection.VirtualAddress;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.data section virtual address: ',IntToHex(DataSection.VirtualAddress,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.data section virtual size: ',IntToHex(DataSection.Misc.VirtualSize,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn(#$0D#$0A'Building .idata section');<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress:=DataSection.VirtualAddress+DataSection.Misc.VirtualSize; &nbsp; &nbsp; &nbsp; &nbsp;//may change<br>&nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size:=NtHeaders.OptionalHeader.SectionAlignment;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@ImportSection,SizeOf(ImportSection));<br>&nbsp; &nbsp; &nbsp; &nbsp; CopyMemory(@ImportSection.Name,PChar('.idata'),6);<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportSection.Misc.VirtualSize:=NtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size;<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportSection.VirtualAddress:=NtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportSection.SizeOfRawData:=RoundSize($00000070,RawDataAlignment);<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportSection.PointerToRawData:=DataSection.PointerToRawData+DataSection.SizeOfRawData;<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportSection.Characteristics:=IMAGE_SCN_CNT_CODE or IMAGE_SCN_CNT_INITIALIZED_DATA or IMAGE_SCN_MEM_WRITE or IMAGE_SCN_MEM_READ;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.idata section virtual address: ',IntToHex(DataSection.VirtualAddress,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.idata section virtual size: ',IntToHex(DataSection.Misc.VirtualSize,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; &nbsp; // .tls Section<br>&nbsp; &nbsp; &nbsp; &nbsp; if TlsSectionPresent then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if not Quiet then WriteLn(#$0D#$0A'Building .tls section');<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TlsCopy.Directory:=@PImageNtHeaders(Ptr)^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PB:=VirtAddrToPhysAddr(Ptr,Pointer(TlsCopy.Directory.VirtualAddress+PImageNtHeaders(Ptr)^.OptionalHeader.ImageBase));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if PB&lt;&gt;nil then Inc(PB,Cardinal(MainData));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TlsCopy.SectionData:=Pointer(PB);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if TlsCopy.SectionData&lt;&gt;nil then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsCopy.RawDataLen:=TlsCopy.SectionData^.RawDataEnd-TlsCopy.SectionData^.RawDataStart;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsCopy.RawData:=Pointer(LocalAlloc(LMEM_FIXED,TlsCopy.RawDataLen));<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PB:=VirtAddrToPhysAddr(Ptr,Pointer(TlsCopy.SectionData^.RawDataStart));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if PB&lt;&gt;nil then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Inc(PB,Cardinal(MainData));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CopyMemory(TlsCopy.RawData,PB,TlsCopy.RawDataLen);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end else ZeroMemory(TlsCopy.RawData,TlsCopy.RawDataLen);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PB:=VirtAddrToPhysAddr(Ptr,Pointer(TlsCopy.SectionData^.AddressOfCallbacks));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if PB=nil then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TlsCopy.CallbacksLen:=4;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TlsCopy.Callbacks:=Pointer(LocalAlloc(LMEM_FIXED,TlsCopy.CallbacksLen));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ZeroMemory(TlsCopy.Callbacks,TlsCopy.CallbacksLen);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end else<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Inc(PB,Cardinal(MainData));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TlsCopy.CallbacksLen:=GetTlsCallbacksLen(PB);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TlsCopy.Callbacks:=Pointer(LocalAlloc(LMEM_FIXED,TlsCopy.CallbacksLen));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CopyMemory(TlsCopy.Callbacks,PB,TlsCopy.CallbacksLen);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@TlsSection,SizeOf(TlsSection));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CopyMemory(@TlsSection.Name,PChar('.tls'),4);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSection.VirtualAddress:=ImportSection.VirtualAddress+ImportSection.Misc.VirtualSize;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSection.PointerToRawData:=ImportSection.PointerToRawData+ImportSection.SizeOfRawData;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSection.Characteristics:=IMAGE_SCN_MEM_WRITE or IMAGE_SCN_MEM_READ;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@TlsSectionData,SizeOf(TlsSectionData));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSectionData.RawDataStart:=NtHeaders.OptionalHeader.ImageBase+TlsSection.VirtualAddress+RoundSize(SizeOf(TlsSectionData),$10);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSectionData.RawDataEnd:=TlsSectionData.RawDataStart+TlsCopy.RawDataLen;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSectionData.AddressOfCallbacks:=RoundSize(TlsSectionData.RawDataEnd,$10);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSectionData.AddressOfIndex:=RoundSize(TlsSectionData.AddressOfCallbacks+TlsCopy.CallbacksLen,$08);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSection.SizeOfRawData:=RoundSize(TlsSectionData.AddressOfIndex-TlsSection.VirtualAddress-NtHeaders.OptionalHeader.ImageBase+$10,RawDataAlignment);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TlsSection.Misc.VirtualSize:=RoundSize(TlsSection.SizeOfRawData,NtHeaders.OptionalHeader.SectionAlignment);<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS].VirtualAddress:=ImportSection.VirtualAddress+ImportSection.Misc.VirtualSize; &nbsp; &nbsp; &nbsp; //may change<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS].Size:=TlsSection.SizeOfRawData;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end else TlsSectionPresent:=False;<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.tls section virtual address: ',IntToHex(TlsSection.VirtualAddress,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteLn('.tls section virtual size: ',IntToHex(TlsSection.Misc.VirtualSize,8));<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if not TlsSectionPresent then WriteLn('.tls section is invalid, new executable may not work');<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if TlsSectionPresent then NtHeaders.OptionalHeader.SizeOfImage:=TlsSection.VirtualAddress+TlsSection.Misc.VirtualSize<br>&nbsp; &nbsp; &nbsp; &nbsp; else NtHeaders.OptionalHeader.SizeOfImage:=ImportSection.VirtualAddress+ImportSection.Misc.VirtualSize;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if not Quiet then WriteLn(#$0D#$0A'Building import descriptor ...');<br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@ImportDesc,SizeOf(ImportDesc));<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportDesc.Characteristics:=ImportSection.VirtualAddress+(NumberOfDLL+1)*SizeOf(ImportDesc);<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportDesc.cName:=ImportSection.VirtualAddress+(NumberOfDLL+1)*SizeOf(ImportDesc)+(NumberOfImports+1)*SizeOf(TImageThunkData)*2;<br>&nbsp; &nbsp; &nbsp; &nbsp; ImportDesc.cFirstThunk:=Pointer(ImportDesc.Characteristics+(NumberOfImports+1)*SizeOf(TImageThunkData));<br><br>&nbsp; &nbsp; &nbsp; &nbsp; ThunkGetProcAddress.Ordinal:=ImportSection.VirtualAddress+(NumberOfDLL+1)*SizeOf(ImportDesc)+(NumberOfImports+1)*SizeOf(TImageThunkData)*2+Kernel32Size+2;<br>&nbsp; &nbsp; &nbsp; &nbsp; ThunkLoadLibrary.Ordinal:=ThunkGetProcAddress.Ordinal+GetProcAddressSize+2+2;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(@NullDesc,SizeOf(NullDesc));<br>.......<br><br>其中可能用到的函数为:<br><br>procedure GenerateInitCode(ACodePtr,AKeyPtr,AData1Ptr,ASize1,AData2Ptr,ASize2,ADynLoadAddr,AGetProcAddrImpAddr,ALoadLibImpAddr,AMainPtr:Cardinal);<br>//this is the POLY-decoder and loader<br>//see the end of this function to know what it finally does<br>//don't forget to fixup pointers of some instructions<br>//add more variants for each instruction if you think antivirus still get this<br>var<br>&nbsp;LInitInstr:array[0..InitInstrCount-1] of TVarInstruction;<br>&nbsp;LI:Integer;<br>&nbsp;LVirtAddr,LRubbishSize,LDelta,LDelta2,LRemaining,LCodeStart,LPtrAddr:Cardinal;<br>&nbsp;LPB:PByte;<br>begin<br>&nbsp;ZeroMemory(@LInitInstr,SizeOf(LInitInstr));<br>&nbsp;//call somewhere to get eip<br>&nbsp;LInitInstr[00].Count:=1;<br>&nbsp;LInitInstr[00].Vars[0].Len:=5;<br>&nbsp;LInitInstr[00].Vars[0].Code:=#$E8#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //call 0WWXXYYZZh<br><br>&nbsp;//eip to ebx<br>&nbsp;LInitInstr[01].Count:=5;<br>&nbsp;LInitInstr[01].Vars[0].Len:=1;<br>&nbsp;LInitInstr[01].Vars[0].Code:=#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br>&nbsp;LInitInstr[01].Vars[1].Len:=3;<br>&nbsp;LInitInstr[01].Vars[1].Code:=#$8B#$1C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov ebx,[esp]<br>&nbsp;LInitInstr[01].Vars[2].Len:=3;<br>&nbsp;LInitInstr[01].Vars[2].Code:=#$58 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$D8; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov ebx,eax<br>&nbsp;LInitInstr[01].Vars[3].Len:=5;<br>&nbsp;LInitInstr[01].Vars[3].Code:=#$8B#$14#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$87#$DA; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg ebx,edx<br>&nbsp;LInitInstr[01].Vars[4].Len:=7;<br>&nbsp;LInitInstr[01].Vars[4].Code:=#$8B#$F4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov esi,esp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$AD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lodsd<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$33#$DB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor ebx,ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$33#$D8; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor ebx,eax<br><br>&nbsp;//ebx - offset = image base<br>&nbsp;LInitInstr[02].Count:=4;<br>&nbsp;LInitInstr[02].Vars[0].Len:=6;<br>&nbsp;LInitInstr[02].Vars[0].Code:=#$81#$EB#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //sub ebx,0WWXXYYZZh<br>&nbsp;LInitInstr[02].Vars[1].Len:=8;<br>&nbsp;LInitInstr[02].Vars[1].Code:=#$B9#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$4B &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//dec ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$E2#$FD; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //loop Code<br>&nbsp;LInitInstr[02].Vars[2].Len:=16;<br>&nbsp;LInitInstr[02].Vars[2].Code:=#$66#$B8#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ax,0WWXXh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$66#$B9#$78#$56 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov cx,0YYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$E0#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shl eax,010h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$66#$33#$C1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor ax,cx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$2B#$D8; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //sub ebx,eax<br>&nbsp;LInitInstr[02].Vars[3].Len:=9;<br>&nbsp;LInitInstr[02].Vars[3].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$2C#$24#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp;//sub [esp],0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br><br>&nbsp;//image base to eax<br>&nbsp;LInitInstr[03].Count:=4;<br>&nbsp;LInitInstr[03].Vars[0].Len:=2;<br>&nbsp;LInitInstr[03].Vars[0].Code:=#$8B#$C3; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,ebx<br>&nbsp;LInitInstr[03].Vars[1].Len:=2;<br>&nbsp;LInitInstr[03].Vars[1].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br>&nbsp;LInitInstr[03].Vars[2].Len:=3;<br>&nbsp;LInitInstr[03].Vars[2].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$93 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xchg ebx,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br>&nbsp;LInitInstr[03].Vars[3].Len:=5;<br>&nbsp;LInitInstr[03].Vars[3].Code:=#$52 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$1C#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov [esp],ebsx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br><br>&nbsp;//image base to edi<br>&nbsp;LInitInstr[04].Count:=4;<br>&nbsp;LInitInstr[04].Vars[0].Len:=2;<br>&nbsp;LInitInstr[04].Vars[0].Code:=#$8B#$FB; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov edi,ebx<br>&nbsp;LInitInstr[04].Vars[1].Len:=2;<br>&nbsp;LInitInstr[04].Vars[1].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5F; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop edi<br>&nbsp;LInitInstr[04].Vars[2].Len:=4;<br>&nbsp;LInitInstr[04].Vars[2].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$87#$DF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xchg ebx,edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br>&nbsp;LInitInstr[04].Vars[3].Len:=2;<br>&nbsp;LInitInstr[04].Vars[3].Code:=#$8D#$3B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //lea edi,[ebx]<br><br>&nbsp;//edi + key addr = ptr on key<br>&nbsp;LInitInstr[05].Count:=4;<br>&nbsp;LInitInstr[05].Vars[0].Len:=6;<br>&nbsp;LInitInstr[05].Vars[0].Code:=#$81#$C7#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //add edi,0WWXXYYZZh<br>&nbsp;LInitInstr[05].Vars[1].Len:=7;<br>&nbsp;LInitInstr[05].Vars[1].Code:=#$BA#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$FA; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add edi,edx<br>&nbsp;LInitInstr[05].Vars[2].Len:=8;<br>&nbsp;LInitInstr[05].Vars[2].Code:=#$68#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$3C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add esi,[esp]<br>&nbsp;LInitInstr[05].Vars[3].Len:=9;<br>&nbsp;LInitInstr[05].Vars[3].Code:=#$57 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$BF#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edi,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$FA; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add edi,edx<br><br>&nbsp;//edi = key on stack<br>&nbsp;LInitInstr[06].Count:=4;<br>&nbsp;LInitInstr[06].Vars[0].Len:=1;<br>&nbsp;LInitInstr[06].Vars[0].Code:=#$57; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push edi<br>&nbsp;LInitInstr[06].Vars[1].Len:=4;<br>&nbsp;LInitInstr[06].Vars[1].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$3C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov [esp],edi<br>&nbsp;LInitInstr[06].Vars[2].Len:=3;<br>&nbsp;LInitInstr[06].Vars[2].Code:=#$8B#$CF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$51; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ecx<br>&nbsp;LInitInstr[06].Vars[3].Len:=5;<br>&nbsp;LInitInstr[06].Vars[3].Code:=#$6A#$00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$31#$3C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor [esp],edi<br><br>&nbsp;//eax + data addr = ptr on data<br>&nbsp;LInitInstr[07].Count:=4;<br>&nbsp;LInitInstr[07].Vars[0].Len:=5;<br>&nbsp;LInitInstr[07].Vars[0].Code:=#$05#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,0WWXXYYZZh<br>&nbsp;LInitInstr[07].Vars[1].Len:=7;<br>&nbsp;LInitInstr[07].Vars[1].Code:=#$BA#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$C2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,edx<br>&nbsp;LInitInstr[07].Vars[2].Len:=9;<br>&nbsp;LInitInstr[07].Vars[2].Code:=#$68#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add eax,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop edx<br>&nbsp;LInitInstr[07].Vars[3].Len:=6;<br>&nbsp;LInitInstr[07].Vars[3].Code:=#$8D#$80#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //lea eax,[eax+0WWXXYYZZh]<br><br>&nbsp;//size on stack<br>&nbsp;LInitInstr[08].Count:=4;<br>&nbsp;LInitInstr[08].Vars[0].Len:=5;<br>&nbsp;LInitInstr[08].Vars[0].Code:=#$68#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push 0WWXXYYZZh<br>&nbsp;LInitInstr[08].Vars[1].Len:=6;<br>&nbsp;LInitInstr[08].Vars[1].Code:=#$BD#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ebp,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$55; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ebp<br>&nbsp;LInitInstr[08].Vars[2].Len:=9;<br>&nbsp;LInitInstr[08].Vars[2].Code:=#$6A#$00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$04#$24#$78#$56#$34#$12; &nbsp; &nbsp; //add [esp],0WWXXYYZZh<br>&nbsp;LInitInstr[08].Vars[3].Len:=9;<br>&nbsp;LInitInstr[08].Vars[3].Code:=#$33#$C9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor ecx,ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$C1#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add ecx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$51; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ecx<br>&nbsp;//eax = addr on stack<br>&nbsp;LInitInstr[09].Count:=4;<br>&nbsp;LInitInstr[09].Vars[0].Len:=1;<br>&nbsp;LInitInstr[09].Vars[0].Code:=#$50; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push eax<br>&nbsp;LInitInstr[09].Vars[1].Len:=4;<br>&nbsp;LInitInstr[09].Vars[1].Code:=#$51 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$04#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov [esp],eax<br>&nbsp;LInitInstr[09].Vars[2].Len:=3;<br>&nbsp;LInitInstr[09].Vars[2].Code:=#$8B#$E8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ebp,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$55; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ebp<br>&nbsp;LInitInstr[09].Vars[3].Len:=9;<br>&nbsp;LInitInstr[09].Vars[3].Code:=#$6A#$21 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 021h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$31#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor [esp],eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$83#$34#$24#$21; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor [esp],021h<br><br>&nbsp;//call @Coder<br>&nbsp;LInitInstr[10].Count:=1;<br>&nbsp;LInitInstr[10].Vars[0].Len:=5;<br>&nbsp;LInitInstr[10].Vars[0].Code:=#$E8#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //call 0WWXXYYZZh<br><br>&nbsp;//image base to eax<br>&nbsp;LInitInstr[11].Count:=4;<br>&nbsp;LInitInstr[11].Vars[0].Len:=2;<br>&nbsp;LInitInstr[11].Vars[0].Code:=#$8B#$C3; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,ebx<br>&nbsp;LInitInstr[11].Vars[1].Len:=2;<br>&nbsp;LInitInstr[11].Vars[1].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br>&nbsp;LInitInstr[11].Vars[2].Len:=4;<br>&nbsp;LInitInstr[11].Vars[2].Code:=#$8B#$CB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$C1; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,ecx<br>&nbsp;LInitInstr[11].Vars[3].Len:=3;<br>&nbsp;LInitInstr[11].Vars[3].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$93 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xchg ebx,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br><br>&nbsp;//eax + data ptr -&gt; ptr on data<br>&nbsp;LInitInstr[12].Count:=4;<br>&nbsp;LInitInstr[12].Vars[0].Len:=5;<br>&nbsp;LInitInstr[12].Vars[0].Code:=#$05#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,012345678h<br>&nbsp;LInitInstr[12].Vars[1].Len:=7;<br>&nbsp;LInitInstr[12].Vars[1].Code:=#$B9#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,012345678h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$C1; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,ecx<br>&nbsp;LInitInstr[12].Vars[2].Len:=11;<br>&nbsp;LInitInstr[12].Vars[2].Code:=#$68#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 012345678h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add eax,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$83#$C4#$04; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add esp,004h<br>&nbsp;LInitInstr[12].Vars[3].Len:=9;<br>&nbsp;LInitInstr[12].Vars[3].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$04#$24#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp;//add [esp],012345678h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br><br>&nbsp;//edi = key on stack<br>&nbsp;LInitInstr[13].Count:=4;<br>&nbsp;LInitInstr[13].Vars[0].Len:=1;<br>&nbsp;LInitInstr[13].Vars[0].Code:=#$57; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push edi<br>&nbsp;LInitInstr[13].Vars[1].Len:=4;<br>&nbsp;LInitInstr[13].Vars[1].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$3C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov [esp],edi<br>&nbsp;LInitInstr[13].Vars[2].Len:=3;<br>&nbsp;LInitInstr[13].Vars[2].Code:=#$8B#$CF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$51; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ecx<br>&nbsp;LInitInstr[13].Vars[3].Len:=5;<br>&nbsp;LInitInstr[13].Vars[3].Code:=#$6A#$00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$31#$3C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor [esp],edi<br><br>&nbsp;//size on stack<br>&nbsp;LInitInstr[14].Count:=5;<br>&nbsp;LInitInstr[14].Vars[0].Len:=5;<br>&nbsp;LInitInstr[14].Vars[0].Code:=#$68#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push 0WWXXYYZZh<br>&nbsp;LInitInstr[14].Vars[1].Len:=6;<br>&nbsp;LInitInstr[14].Vars[1].Code:=#$BD#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ebp,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$55; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ebp<br>&nbsp;LInitInstr[14].Vars[2].Len:=9;<br>&nbsp;LInitInstr[14].Vars[2].Code:=#$6A#$00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$04#$24#$78#$56#$34#$12; &nbsp; &nbsp; //add [esp],0WWXXYYZZh<br>&nbsp;LInitInstr[14].Vars[3].Len:=9;<br>&nbsp;LInitInstr[14].Vars[3].Code:=#$33#$C9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor ecx,ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$C1#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add ecx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$51; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ecx<br>&nbsp;LInitInstr[14].Vars[4].Len:=9;<br>&nbsp;LInitInstr[14].Vars[4].Code:=#$6A#$00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$34#$24#$78#$56#$34#$12; &nbsp; &nbsp; //xor [esp],0WWXXYYZZh<br><br>&nbsp;//eax = addr on stack<br>&nbsp;LInitInstr[15].Count:=4;<br>&nbsp;LInitInstr[15].Vars[0].Len:=1;<br>&nbsp;LInitInstr[15].Vars[0].Code:=#$50; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push eax<br>&nbsp;LInitInstr[15].Vars[1].Len:=4;<br>&nbsp;LInitInstr[15].Vars[1].Code:=#$51 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$04#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov [esp],eax<br>&nbsp;LInitInstr[15].Vars[2].Len:=3;<br>&nbsp;LInitInstr[15].Vars[2].Code:=#$8B#$E8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ebp,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$55; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ebp<br>&nbsp;LInitInstr[15].Vars[3].Len:=9;<br>&nbsp;LInitInstr[15].Vars[3].Code:=#$6A#$21 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 021h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$31#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor [esp],eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$83#$34#$24#$21; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor [esp],021h<br><br>&nbsp;//call @Coder<br>&nbsp;LInitInstr[16].Count:=1;<br>&nbsp;LInitInstr[16].Vars[0].Len:=5;<br>&nbsp;LInitInstr[16].Vars[0].Code:=#$E8#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //call 0WWXXYYZZh<br><br>&nbsp;//call @DynLoader<br>&nbsp;LInitInstr[17].Count:=1;<br>&nbsp;LInitInstr[17].Vars[0].Len:=5;<br>&nbsp;LInitInstr[17].Vars[0].Code:=#$E8#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //call 0WWXXYYZZh<br><br>&nbsp;//ret<br>&nbsp;LInitInstr[18].Count:=4;<br>&nbsp;LInitInstr[18].Vars[0].Len:=1;<br>&nbsp;LInitInstr[18].Vars[0].Code:=#$C3; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //ret<br>&nbsp;LInitInstr[18].Vars[1].Len:=3;<br>&nbsp;LInitInstr[18].Vars[1].Code:=#$58 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$FF#$E0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //jmp eax<br>&nbsp;LInitInstr[18].Vars[2].Len:=7;<br>&nbsp;LInitInstr[18].Vars[2].Code:=#$83#$C4#$04 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add esp,004h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$FF#$64#$24#$FC; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //jmp [esp-004h]<br>&nbsp;LInitInstr[18].Vars[3].Len:=7;<br>&nbsp;LInitInstr[18].Vars[3].Code:=#$8B#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov eax,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C2#$04#$00; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //ret 004h<br><br>&nbsp;//@Coder_begin<br>&nbsp;//save edi on stack<br>&nbsp;LInitInstr[19].Count:=4;<br>&nbsp;LInitInstr[19].Vars[0].Len:=1;<br>&nbsp;LInitInstr[19].Vars[0].Code:=#$57; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push edi<br>&nbsp;LInitInstr[19].Vars[1].Len:=4;<br>&nbsp;LInitInstr[19].Vars[1].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$3C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov [esp],edi<br>&nbsp;LInitInstr[19].Vars[2].Len:=3;<br>&nbsp;LInitInstr[19].Vars[2].Code:=#$8B#$CF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$51; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //push ecx<br>&nbsp;LInitInstr[19].Vars[3].Len:=5;<br>&nbsp;LInitInstr[19].Vars[3].Code:=#$6A#$00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$31#$3C#$24; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor [esp],edi<br><br>&nbsp;//AAddr -&gt; edi<br>&nbsp;LInitInstr[20].Count:=4;<br>&nbsp;LInitInstr[20].Vars[0].Len:=4;<br>&nbsp;LInitInstr[20].Vars[0].Code:=#$8B#$7C#$24#$08; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov edi,[esp+008h]<br>&nbsp;LInitInstr[20].Vars[1].Len:=6;<br>&nbsp;LInitInstr[20].Vars[1].Code:=#$8B#$4C#$24#$08 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,[esp+008h]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$87#$CF; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg ecx,edi<br>&nbsp;LInitInstr[20].Vars[2].Len:=6;<br>&nbsp;LInitInstr[20].Vars[2].Code:=#$33#$FF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor edi,edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$7C#$24#$08; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add edi,[esp+008h]<br>&nbsp;LInitInstr[20].Vars[3].Len:=6;<br>&nbsp;LInitInstr[20].Vars[3].Code:=#$8D#$7C#$24#$08 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea edi,[esp+008h]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$3F; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov edi,[edi]<br><br>&nbsp;//ASize -&gt; ecx<br>&nbsp;LInitInstr[21].Count:=4;<br>&nbsp;LInitInstr[21].Vars[0].Len:=4;<br>&nbsp;LInitInstr[21].Vars[0].Code:=#$8B#$4C#$24#$0C; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov ecx,[esp+00Ch]<br>&nbsp;LInitInstr[21].Vars[1].Len:=5;<br>&nbsp;LInitInstr[21].Vars[1].Code:=#$8B#$44#$24#$0C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov eax,[esp+00Ch]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$91; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg ecx,eax<br>&nbsp;LInitInstr[21].Vars[2].Len:=7;<br>&nbsp;LInitInstr[21].Vars[2].Code:=#$6A#$00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$59 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$4C#$24#$0C; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add ecx,[esp+00Ch]<br>&nbsp;LInitInstr[21].Vars[3].Len:=6;<br>&nbsp;LInitInstr[21].Vars[3].Code:=#$8D#$44#$24#$0C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea eax,[esp+00Ch]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$08; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov ecx,[eax]<br><br>&nbsp;//ASize = ASize div 4 -&gt; ecx<br>&nbsp;LInitInstr[22].Count:=4;<br>&nbsp;LInitInstr[22].Vars[0].Len:=3;<br>&nbsp;LInitInstr[22].Vars[0].Code:=#$C1#$E9#$02; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //shr ecx,002h<br>&nbsp;LInitInstr[22].Vars[1].Len:=4;<br>&nbsp;LInitInstr[22].Vars[1].Code:=#$D1#$E9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shr ecx,001h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$D1#$E9; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //shr ecx,001h<br>&nbsp;LInitInstr[22].Vars[2].Len:=10;<br>&nbsp;LInitInstr[22].Vars[2].Code:=#$8B#$C1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov eax,ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$6A#$04 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 004h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$59 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$99 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//cdq<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$F7#$F1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//div ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$C8; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov ecx,eax<br>&nbsp;LInitInstr[22].Vars[3].Len:=14;<br>&nbsp;LInitInstr[22].Vars[3].Code:=#$51 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$48 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//dec eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$49 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//dec ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$E2#$FC &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//loop -2<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$C8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$48 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//dec eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$49 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//dec ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$E2#$FC &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//loop -2<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$C8; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov ecx,eax<br><br>&nbsp;//AKey -&gt; esi<br>&nbsp;LInitInstr[23].Count:=4;<br>&nbsp;LInitInstr[23].Vars[0].Len:=4;<br>&nbsp;LInitInstr[23].Vars[0].Code:=#$8B#$74#$24#$10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov esi,[esp+010h]<br>&nbsp;LInitInstr[23].Vars[1].Len:=5;<br>&nbsp;LInitInstr[23].Vars[1].Code:=#$8B#$44#$24#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov eax,[esp+010h]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$96; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg esi,eax<br>&nbsp;LInitInstr[23].Vars[2].Len:=6;<br>&nbsp;LInitInstr[23].Vars[2].Code:=#$33#$F6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor esi,esi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$33#$74#$24#$10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor esi,[esp+010h]<br>&nbsp;LInitInstr[23].Vars[3].Len:=6;<br>&nbsp;LInitInstr[23].Vars[3].Code:=#$8D#$74#$24#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea esi,[esp+010h]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$36; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov esi,[esi]<br><br>&nbsp;//mov eax,[esi]<br>&nbsp;LInitInstr[24].Count:=4;<br>&nbsp;LInitInstr[24].Vars[0].Len:=2;<br>&nbsp;LInitInstr[24].Vars[0].Code:=#$8B#$06; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,[esi]<br>&nbsp;LInitInstr[24].Vars[1].Len:=3;<br>&nbsp;LInitInstr[24].Vars[1].Code:=#$FF#$36 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push esi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br>&nbsp;LInitInstr[24].Vars[2].Len:=4;<br>&nbsp;LInitInstr[24].Vars[2].Code:=#$8D#$06 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea eax,esi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$00; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,[eax]<br>&nbsp;LInitInstr[24].Vars[3].Len:=4;<br>&nbsp;LInitInstr[24].Vars[3].Code:=#$33#$C0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor eax,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$06; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,[esi]<br><br>&nbsp;//test eax,0FF000000h<br>&nbsp;LInitInstr[25].Count:=4;<br>&nbsp;LInitInstr[25].Vars[0].Len:=5;<br>&nbsp;LInitInstr[25].Vars[0].Code:=#$A9#$00#$00#$00#$FF; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //test eax,0FF000000h<br>&nbsp;LInitInstr[25].Vars[1].Len:=6;<br>&nbsp;LInitInstr[25].Vars[1].Code:=#$F7#$06#$00#$00#$00#$FF; &nbsp; &nbsp; &nbsp; &nbsp; //test [esi],0FF000000h<br>&nbsp;LInitInstr[25].Vars[2].Len:=7;<br>&nbsp;LInitInstr[25].Vars[2].Code:=#$8B#$D0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$EA#$18 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shr edx,018h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$85#$D2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //test edx,edx<br>&nbsp;LInitInstr[25].Vars[3].Len:=11;<br>&nbsp;LInitInstr[25].Vars[3].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$E2#$00#$00#$00#$FF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//and edx,0FF000000h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$83#$FA#$00; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //cmp edx,000h<br><br>&nbsp;//jz @Coder_pre_code<br>&nbsp;LInitInstr[26].Count:=2;<br>&nbsp;LInitInstr[26].Vars[0].Len:=6;<br>&nbsp;LInitInstr[26].Vars[0].Code:=#$0F#$84#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //jz +0XXYYZZWWh<br>&nbsp;LInitInstr[26].Vars[1].Len:=7;<br>&nbsp;LInitInstr[26].Vars[1].Code:=#$75#$05 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//jnz +5<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$E9#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //jmp 0XXYYZZWWh<br><br>&nbsp;//add eax,[esp+00Ch]<br>&nbsp;LInitInstr[27].Count:=4;<br>&nbsp;LInitInstr[27].Vars[0].Len:=4;<br>&nbsp;LInitInstr[27].Vars[0].Code:=#$03#$44#$24#$08; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,[esp+00Ch]<br>&nbsp;LInitInstr[27].Vars[1].Len:=6;<br>&nbsp;LInitInstr[27].Vars[1].Code:=#$8D#$54#$24#$08 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea edx,[esp+00Ch]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$02; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,[edx]<br>&nbsp;LInitInstr[27].Vars[2].Len:=5;<br>&nbsp;LInitInstr[27].Vars[2].Code:=#$8B#$D4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,esp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$42#$08; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,[edx+00Ch]<br>&nbsp;LInitInstr[27].Vars[3].Len:=8;<br>&nbsp;LInitInstr[27].Vars[3].Code:=#$FF#$74#$24#$08 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push [esp+00Ch]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add eax,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop edx<br><br>&nbsp;//rol eax,010h<br>&nbsp;LInitInstr[28].Count:=4;<br>&nbsp;LInitInstr[28].Vars[0].Len:=3;<br>&nbsp;LInitInstr[28].Vars[0].Code:=#$C1#$C0#$10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //rol eax,010h<br>&nbsp;LInitInstr[28].Vars[1].Len:=3;<br>&nbsp;LInitInstr[28].Vars[1].Code:=#$C1#$C8#$10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //ror eax,010h<br>&nbsp;LInitInstr[28].Vars[2].Len:=11;<br>&nbsp;LInitInstr[28].Vars[2].Code:=#$8B#$D0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$EA#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shr edx,010h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$E0#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shl eax,010h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$66#$8B#$C2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov ax,dx<br>&nbsp;LInitInstr[28].Vars[3].Len:=12;<br>&nbsp;LInitInstr[28].Vars[3].Code:=#$66#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$E8#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shr eax,010h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$66#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop dx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$E2#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shl edx,010h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$0B#$C2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //or eax,edx<br><br>&nbsp;//add eax,[esp+010h]<br>&nbsp;LInitInstr[29].Count:=4;<br>&nbsp;LInitInstr[29].Vars[0].Len:=4;<br>&nbsp;LInitInstr[29].Vars[0].Code:=#$03#$44#$24#$10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,[esp+010h]<br>&nbsp;LInitInstr[29].Vars[1].Len:=7;<br>&nbsp;LInitInstr[29].Vars[1].Code:=#$8D#$6C#$24#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea ebp,[esp+010h]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$45#$00; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,[ebp+010h]<br>&nbsp;LInitInstr[29].Vars[2].Len:=5;<br>&nbsp;LInitInstr[29].Vars[2].Code:=#$8B#$D4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,esp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$42#$10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,[edx+010h]<br>&nbsp;LInitInstr[29].Vars[3].Len:=8;<br>&nbsp;LInitInstr[29].Vars[3].Code:=#$FF#$74#$24#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push [esp+00Ch]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add eax,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop edx<br><br>&nbsp;//rol eax,004h<br>&nbsp;LInitInstr[30].Count:=4;<br>&nbsp;LInitInstr[30].Vars[0].Len:=3;<br>&nbsp;LInitInstr[30].Vars[0].Code:=#$C1#$C0#$04; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //rol eax,004h<br>&nbsp;LInitInstr[30].Vars[1].Len:=3;<br>&nbsp;LInitInstr[30].Vars[1].Code:=#$C1#$C8#$1C; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //ror eax,01Ch<br>&nbsp;LInitInstr[30].Vars[2].Len:=10;<br>&nbsp;LInitInstr[30].Vars[2].Code:=#$8B#$D0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$EA#$1C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shr edx,01Ch<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$E0#$04 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//shl eax,004h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$0B#$C2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //or eax,edx<br>&nbsp;LInitInstr[30].Vars[3].Len:=11;<br>&nbsp;LInitInstr[30].Vars[3].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$44#$24#$03 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov eax,[esp+003h]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$C1#$C8#$04 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//ror eax,004h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5D; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebp<br><br>&nbsp;//add eax,ecx<br>&nbsp;LInitInstr[31].Count:=4;<br>&nbsp;LInitInstr[31].Vars[0].Len:=2;<br>&nbsp;LInitInstr[31].Vars[0].Code:=#$03#$C1; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,ecx<br>&nbsp;LInitInstr[31].Vars[1].Len:=5;<br>&nbsp;LInitInstr[31].Vars[1].Code:=#$51 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add eax,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop edx<br>&nbsp;LInitInstr[31].Vars[2].Len:=4;<br>&nbsp;LInitInstr[31].Vars[2].Code:=#$8B#$E9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ebp,ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$C5; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add eax,ebp<br>&nbsp;LInitInstr[31].Vars[3].Len:=5;<br>&nbsp;LInitInstr[31].Vars[3].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$01#$0C#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add [esp],ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br><br>&nbsp;//xor eax,[edi]<br>&nbsp;LInitInstr[32].Count:=4;<br>&nbsp;LInitInstr[32].Vars[0].Len:=2;<br>&nbsp;LInitInstr[32].Vars[0].Code:=#$33#$07; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor eax,[edi]<br>&nbsp;LInitInstr[32].Vars[1].Len:=6;<br>&nbsp;LInitInstr[32].Vars[1].Code:=#$FF#$37 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push [edi]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$33#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor eax,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5D; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebp<br>&nbsp;LInitInstr[32].Vars[2].Len:=4;<br>&nbsp;LInitInstr[32].Vars[2].Code:=#$8B#$17 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edx,[edi]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$33#$C2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xor eax,edx<br>&nbsp;LInitInstr[32].Vars[3].Len:=7;<br>&nbsp;LInitInstr[32].Vars[3].Code:=#$8B#$2F &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ebp,[edi]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$55 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$31#$04#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor [esp],eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br><br>&nbsp;//stosd<br>&nbsp;LInitInstr[33].Count:=4;<br>&nbsp;LInitInstr[33].Vars[0].Len:=1;<br>&nbsp;LInitInstr[33].Vars[0].Code:=#$AB; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //stosd<br>&nbsp;LInitInstr[33].Vars[1].Len:=6;<br>&nbsp;LInitInstr[33].Vars[1].Code:=#$89#$07 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov [edi],eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$47 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//inc edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$47 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//inc edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$47 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//inc edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$47; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //inc edi<br>&nbsp;LInitInstr[33].Vars[2].Len:=7;<br>&nbsp;LInitInstr[33].Vars[2].Code:=#$87#$E7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xchg esp,edi<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$87#$FC; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg edi,esp<br>&nbsp;LInitInstr[33].Vars[3].Len:=9;<br>&nbsp;LInitInstr[33].Vars[3].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$EC &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ebp,esp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$87#$F5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xchg esi,ebp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$A5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//movsd<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$F5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov esi,ebp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop edx<br>&nbsp;//inc esi<br>&nbsp;LInitInstr[34].Count:=4;<br>&nbsp;LInitInstr[34].Vars[0].Len:=1;<br>&nbsp;LInitInstr[34].Vars[0].Code:=#$46; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //inc esi<br>&nbsp;LInitInstr[34].Vars[1].Len:=3;<br>&nbsp;LInitInstr[34].Vars[1].Code:=#$83#$C6#$01; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add esi,001h<br>&nbsp;LInitInstr[34].Vars[2].Len:=3;<br>&nbsp;LInitInstr[34].Vars[2].Code:=#$83#$EE#$FF; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //sub esi,-001h<br>&nbsp;LInitInstr[34].Vars[3].Len:=5;<br>&nbsp;LInitInstr[34].Vars[3].Code:=#$6A#$01 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push 001h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$03#$F2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //add esi,edx<br><br>&nbsp;//loop @Coder_code<br>&nbsp;LInitInstr[35].Count:=1;<br>&nbsp;LInitInstr[35].Vars[0].Len:=7;<br>&nbsp;LInitInstr[35].Vars[0].Code:=#$49 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//dec ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$0F#$85#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //jnz +0WWXXYYZZh<br><br>&nbsp;//pop edi<br>&nbsp;LInitInstr[36].Count:=4;<br>&nbsp;LInitInstr[36].Vars[0].Len:=1;<br>&nbsp;LInitInstr[36].Vars[0].Code:=#$5F; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop edi<br>&nbsp;LInitInstr[36].Vars[1].Len:=4;<br>&nbsp;LInitInstr[36].Vars[1].Code:=#$8B#$3C#$24 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov edi,[esp]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5D; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebp<br>&nbsp;LInitInstr[36].Vars[2].Len:=3;<br>&nbsp;LInitInstr[36].Vars[2].Code:=#$5D &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop ebp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8B#$FD; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov edi,ebp<br>&nbsp;LInitInstr[36].Vars[3].Len:=3;<br>&nbsp;LInitInstr[36].Vars[3].Code:=#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$87#$FA; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg edi,edx<br><br>&nbsp;//ret 00Ch<br>&nbsp;LInitInstr[37].Count:=4;<br>&nbsp;LInitInstr[37].Vars[0].Len:=3;<br>&nbsp;LInitInstr[37].Vars[0].Code:=#$C2#$0C#$00; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //ret 00Ch<br>&nbsp;LInitInstr[37].Vars[1].Len:=6;<br>&nbsp;LInitInstr[37].Vars[1].Code:=#$58 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop edx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5D &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop ebp<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$59 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$FF#$E0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //jmp eax<br>&nbsp;LInitInstr[37].Vars[2].Len:=7;<br>&nbsp;LInitInstr[37].Vars[2].Code:=#$83#$C4#$10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add esp,010h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$FF#$64#$24#$F0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //jmp [esp-010h]<br>&nbsp;LInitInstr[37].Vars[3].Len:=8;<br>&nbsp;LInitInstr[37].Vars[3].Code:=#$6A#$F0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push -010h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$59 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//pop ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$2B#$E1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//sub esp,ecx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$FF#$24#$0C; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //jmp [esp+ecx]<br><br>&nbsp;//mov eax,0WWXXYYZZh<br>&nbsp;LInitInstr[38].Count:=4;<br>&nbsp;LInitInstr[38].Vars[0].Len:=5;<br>&nbsp;LInitInstr[38].Vars[0].Code:=#$B8#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,012345678h<br>&nbsp;LInitInstr[38].Vars[1].Len:=6;<br>&nbsp;LInitInstr[38].Vars[1].Code:=#$68#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push [0WWXXYYZZh]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br>&nbsp;LInitInstr[38].Vars[2].Len:=6;<br>&nbsp;LInitInstr[38].Vars[2].Code:=#$B9#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,012345678h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$91; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg ecx,eax<br>&nbsp;LInitInstr[38].Vars[3].Len:=6;<br>&nbsp;LInitInstr[38].Vars[3].Code:=#$8D#$05#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //lea eax,[012345678h]<br><br>&nbsp;//mov [ebx+0WWXXYYZZh],eax<br>&nbsp;LInitInstr[39].Count:=4;<br>&nbsp;LInitInstr[39].Vars[0].Len:=6;<br>&nbsp;LInitInstr[39].Vars[0].Code:=#$89#$83#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //mov [ebx+0WWXXYYZZh],eax<br>&nbsp;LInitInstr[39].Vars[1].Len:=7;<br>&nbsp;LInitInstr[39].Vars[1].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8F#$83#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //pop [ebx+0WWXXYYZZh]<br>&nbsp;LInitInstr[39].Vars[2].Len:=10;<br>&nbsp;LInitInstr[39].Vars[2].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$C3#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add ebx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$03 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov [ebx],eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br>&nbsp;LInitInstr[39].Vars[3].Len:=7;<br>&nbsp;LInitInstr[39].Vars[3].Code:=#$8D#$BB#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea edi,[ebx+0WWXXYYZZh]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$AB; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //stosd<br><br>&nbsp;//mov eax,0WWXXYYZZh<br>&nbsp;LInitInstr[40].Count:=4;<br>&nbsp;LInitInstr[40].Vars[0].Len:=5;<br>&nbsp;LInitInstr[40].Vars[0].Code:=#$B8#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,012345678h<br>&nbsp;LInitInstr[40].Vars[1].Len:=6;<br>&nbsp;LInitInstr[40].Vars[1].Code:=#$68#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push [0WWXXYYZZh]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br>&nbsp;LInitInstr[40].Vars[2].Len:=6;<br>&nbsp;LInitInstr[40].Vars[2].Code:=#$B9#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,012345678h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$91; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg ecx,eax<br>&nbsp;LInitInstr[40].Vars[3].Len:=6;<br>&nbsp;LInitInstr[40].Vars[3].Code:=#$8D#$05#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //lea eax,[012345678h]<br><br>&nbsp;//mov [ebx+0WWXXYYZZh],eax<br>&nbsp;LInitInstr[41].Count:=4;<br>&nbsp;LInitInstr[41].Vars[0].Len:=6;<br>&nbsp;LInitInstr[41].Vars[0].Code:=#$89#$83#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //mov [ebx+0WWXXYYZZh],eax<br>&nbsp;LInitInstr[41].Vars[1].Len:=7;<br>&nbsp;LInitInstr[41].Vars[1].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8F#$83#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //pop [ebx+0WWXXYYZZh]<br>&nbsp;LInitInstr[41].Vars[2].Len:=10;<br>&nbsp;LInitInstr[41].Vars[2].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$C3#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add ebx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$03 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov [ebx],eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br>&nbsp;LInitInstr[41].Vars[3].Len:=7;<br>&nbsp;LInitInstr[41].Vars[3].Code:=#$8D#$BB#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea edi,[ebx+0WWXXYYZZh]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$AB; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //stosd<br><br>&nbsp;//mov eax,0WWXXYYZZh<br>&nbsp;LInitInstr[42].Count:=4;<br>&nbsp;LInitInstr[42].Vars[0].Len:=5;<br>&nbsp;LInitInstr[42].Vars[0].Code:=#$B8#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //mov eax,012345678h<br>&nbsp;LInitInstr[42].Vars[1].Len:=6;<br>&nbsp;LInitInstr[42].Vars[1].Code:=#$68#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push [0WWXXYYZZh]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$58; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop eax<br>&nbsp;LInitInstr[42].Vars[2].Len:=6;<br>&nbsp;LInitInstr[42].Vars[2].Code:=#$B9#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov ecx,012345678h<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$91; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //xchg ecx,eax<br>&nbsp;LInitInstr[42].Vars[3].Len:=6;<br>&nbsp;LInitInstr[42].Vars[3].Code:=#$8D#$05#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //lea eax,[012345678h]<br><br>&nbsp;//mov [ebx+0WWXXYYZZh],eax<br>&nbsp;LInitInstr[43].Count:=4;<br>&nbsp;LInitInstr[43].Vars[0].Len:=6;<br>&nbsp;LInitInstr[43].Vars[0].Code:=#$89#$83#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //mov [ebx+0WWXXYYZZh],eax<br>&nbsp;LInitInstr[43].Vars[1].Len:=7;<br>&nbsp;LInitInstr[43].Vars[1].Code:=#$50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$8F#$83#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //pop [ebx+0WWXXYYZZh]<br>&nbsp;LInitInstr[43].Vars[2].Len:=10;<br>&nbsp;LInitInstr[43].Vars[2].Code:=#$53 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//push ebx<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$81#$C3#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//add ebx,0WWXXYYZZh<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$89#$03 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mov [ebx],eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$5B; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //pop ebx<br>&nbsp;LInitInstr[43].Vars[3].Len:=7;<br>&nbsp;LInitInstr[43].Vars[3].Code:=#$8D#$BB#$78#$56#$34#$12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//lea edi,[ebx+0WWXXYYZZh]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$AB; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //stosd<br><br>&nbsp;//jmp @DynLoader_begin<br>&nbsp;LInitInstr[44].Count:=3;<br>&nbsp;LInitInstr[44].Vars[0].Len:=5;<br>&nbsp;LInitInstr[44].Vars[0].Code:=#$E9#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //jmp +0WWXXYYZZh<br>&nbsp;LInitInstr[44].Vars[1].Len:=8;<br>&nbsp;LInitInstr[44].Vars[1].Code:=#$33#$C0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//xor eax,eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$0F#$84#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //jz +0WWXXYYZZh<br>&nbsp;LInitInstr[44].Vars[2].Len:=7;<br>&nbsp;LInitInstr[44].Vars[2].Code:=#$48 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//dec eax<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+#$0F#$85#$78#$56#$34#$12; &nbsp; &nbsp; &nbsp; &nbsp; //jnz +0WWXXYYZZh<br><br><br>&nbsp;//<br>&nbsp;//now put some rubbish, select instruction and write it there<br>&nbsp;//then put some rubbish, select next instruction and write it there<br>&nbsp;//then put some ...<br>&nbsp;//<br>&nbsp;//but be careful with 26th and 27th instructions which is test and condition jump<br>&nbsp;//don't put the rubbish between them<br>&nbsp;//<br><br><br>&nbsp;ZeroMemory(InitData,InitSize);<br>&nbsp;LRemaining:=InitSize;<br><br>&nbsp;LPB:=InitData;<br>&nbsp;LCodeStart:=NtHeaders.OptionalHeader.ImageBase+NtHeaders.OptionalHeader.AddressOfEntryPoint;<br>&nbsp;LVirtAddr:=LCodeStart;<br><br>&nbsp;for LI:=0 to InitInstrCount-1 do<br>&nbsp;with LInitInstr[LI] do<br>&nbsp;begin<br>&nbsp; LDelta:=InitInstrCount-LI;<br>&nbsp; LDelta2:=LRemaining-LDelta*10;<br>&nbsp; LRubbishSize:=Random(LDelta2 div LDelta);<br>&nbsp; if (LI&lt;&gt;26) and (LRubbishSize&gt;0) then &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//can't change flags after test<br>&nbsp; begin<br>&nbsp; &nbsp;GenerateRubbishCode(LPB,LRubbishSize,LVirtAddr);<br>&nbsp; &nbsp;Inc(LPB,LRubbishSize);<br>&nbsp; &nbsp;Inc(LVirtAddr,LRubbishSize);<br>&nbsp; &nbsp;Dec(LRemaining,LRubbishSize);<br>&nbsp; end;<br><br>&nbsp; VirtualAddress:=LVirtAddr;<br>&nbsp; Index:=Random(LInitInstr[LI].Count);<br>&nbsp; with Vars[Index] do<br>&nbsp; begin<br>&nbsp; &nbsp;CopyMemory(LPB,@Code,Len);<br>&nbsp; &nbsp;Inc(LPB,Len);<br>&nbsp; &nbsp;Inc(LVirtAddr,Len);<br>&nbsp; &nbsp;Dec(LRemaining,Len);<br>&nbsp; end;<br>&nbsp;end;<br>&nbsp;LRubbishSize:=Random(LRemaining);<br>&nbsp;GenerateRubbishCode(LPB,LRubbishSize,LVirtAddr);<br>&nbsp;Dec(LRemaining,LRubbishSize);<br>&nbsp;Inc(LPB,LRubbishSize);<br>&nbsp;LRubbishSize:=Random(LRemaining);<br>&nbsp;GenerateRandomBuffer(LPB,LRubbishSize);<br><br><br>&nbsp;//<br>&nbsp;//now correct pointers<br>&nbsp;//<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[00].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=LInitInstr[01].VirtualAddress-(LInitInstr[00].VirtualAddress+5);<br>&nbsp;Inc(LPB);<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[02].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=LInitInstr[00].VirtualAddress+5-ACodePtr;<br>&nbsp;if LInitInstr[02].Index&lt;&gt;2 then<br>&nbsp;begin<br>&nbsp; case LInitInstr[02].Index of<br>&nbsp; &nbsp;0:Inc(LPB,2);<br>&nbsp; &nbsp;1:Inc(LPB);<br>&nbsp; &nbsp;3:Inc(LPB,4);<br>&nbsp; end;<br>&nbsp; PCardinal(LPB)^:=LPtrAddr;<br>&nbsp;end else<br>&nbsp;begin<br>&nbsp; Inc(LPB,2);<br>&nbsp; PWord(LPB)^:=HiWord(LPtrAddr);<br>&nbsp; Inc(LPB,4);<br>&nbsp; PWord(LPB)^:=LoWord(LPtrAddr);<br>&nbsp;end;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[05].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AKeyPtr;<br>&nbsp;case LInitInstr[05].Index of<br>&nbsp; 0,3:Inc(LPB,2);<br>&nbsp; 1,2:Inc(LPB);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[07].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AData1Ptr;<br>&nbsp;case LInitInstr[07].Index of<br>&nbsp; 0,1,2:Inc(LPB);<br>&nbsp; 3:Inc(LPB,2);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[08].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=ASize1;<br>&nbsp;case LInitInstr[08].Index of<br>&nbsp; 0,1:Inc(LPB);<br>&nbsp; 2:Inc(LPB,5);<br>&nbsp; 3:Inc(LPB,4);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[10].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=LInitInstr[19].VirtualAddress-(LInitInstr[10].VirtualAddress+5);<br>&nbsp;Inc(LPB);<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[12].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AData2Ptr;<br>&nbsp;case LInitInstr[12].Index of<br>&nbsp; 0,1,2:Inc(LPB);<br>&nbsp; 3:Inc(LPB,4);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[14].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=ASize2;<br>&nbsp;case LInitInstr[14].Index of<br>&nbsp; 0,1:Inc(LPB);<br>&nbsp; 2,4:Inc(LPB,5);<br>&nbsp; 3:Inc(LPB,4);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[16].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=LInitInstr[19].VirtualAddress-(LInitInstr[16].VirtualAddress+5);<br>&nbsp;Inc(LPB);<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[17].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=LInitInstr[38].VirtualAddress-(LInitInstr[17].VirtualAddress+5);<br>&nbsp;Inc(LPB);<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[26].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=LInitInstr[23].VirtualAddress-(LInitInstr[26].VirtualAddress+6);<br>&nbsp;case LInitInstr[26].Index of<br>&nbsp; 0:Inc(LPB,2);<br>&nbsp; 1:begin Inc(LPB,3); Dec(LPtrAddr); end;<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[35].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=LInitInstr[24].VirtualAddress-(LInitInstr[35].VirtualAddress+6);<br>&nbsp;Inc(LPB,3);<br>&nbsp;Dec(LPtrAddr);<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[38].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=ALoadLibImpAddr;<br>&nbsp;case LInitInstr[38].Index of<br>&nbsp; 0,1,2:Inc(LPB);<br>&nbsp; 3:Inc(LPB,2);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[39].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AData1Ptr+1;<br>&nbsp;case LInitInstr[39].Index of<br>&nbsp;0,3:Inc(LPB,2);<br>&nbsp; 1,2:Inc(LPB,3);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[40].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AGetProcAddrImpAddr;<br>&nbsp;case LInitInstr[40].Index of<br>&nbsp; 0,1,2:Inc(LPB);<br>&nbsp; 3:Inc(LPB,2);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[41].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AData1Ptr+6;<br>&nbsp;case LInitInstr[41].Index of<br>&nbsp; 0,3:Inc(LPB,2);<br>&nbsp; 1,2:Inc(LPB,3);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[42].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AMainPtr;<br>&nbsp;case LInitInstr[42].Index of<br>&nbsp; 0,1,2:Inc(LPB);<br>&nbsp; 3:Inc(LPB,2);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[43].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=AData1Ptr+11;<br>&nbsp;case LInitInstr[43].Index of<br>&nbsp; &nbsp;0,3:Inc(LPB,2);<br>&nbsp; 1,2:Inc(LPB,3);<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>&nbsp;LPB:=Pointer(Cardinal(InitData)+LInitInstr[44].VirtualAddress-LCodeStart);<br>&nbsp;LPtrAddr:=ADynLoadAddr-(LInitInstr[44].VirtualAddress+5);<br>&nbsp;case LInitInstr[44].Index of<br>&nbsp; 0:Inc(LPB);<br>&nbsp; 1:begin Inc(LPB,4); Dec(LPtrAddr,3); end;<br>&nbsp; 2:begin Inc(LPB,3); Dec(LPtrAddr,2); end;<br>&nbsp;end;<br>&nbsp;PCardinal(LPB)^:=LPtrAddr;<br><br>end;<br>
 
后退
顶部