⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rlp.asm

📁 RLPack1.20 一款优秀的压缩壳源代码.这个是官方最新的版本的源代码。壳完全采用masm32开发. 里面自带两款压缩引擎.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		LEA ECX,DWORD PTR[EDX+((offset __locvf - offset __STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
		
		LEA EBX,DWORD PTR[EDX+((offset __vp - offset __STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __locvp - offset __STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA ECX,DWORD PTR[EDX+((offset __PE32_IMAGEBASE - offset __STUB_START))]
		MOV EAX,ImageBase
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __RELOCATION - offset __STUB_START))]
		MOV EAX,RelocationRVA
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __FILTER_CODE_START - offset __STUB_START))]
		MOV EAX,FirstSectionOffset
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __FILTER_CODE_SIZE - offset __STUB_START))]
		MOV EAX,FirstSectionSize
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __FILTER_CODE_BYTE - offset __STUB_START))]
		MOV EAX,FilterByte
		MOV DWORD PTR[ECX],EAX

		LEA EBX,DWORD PTR[EDX+((offset __STUB_OEP_JUMP - offset __STUB_START))+1]
		LEA ECX,DWORD PTR[EDX+((offset __STUB_OEP_JUMP - offset __STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,ECX
		ADD EAX,ImageBase
		MOV ECX,PackedOEP
		SUB ECX,EAX
		SUB ECX,5
		MOV DWORD PTR[EBX],ECX

		MOV EAX,RawSize
		LEA EBX,DWORD PTR[EDX+((offset __STUB_VA_SIZE - offset __STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
		LEA EBX,DWORD PTR[EDX+((offset __STUB_VF_SIZE - offset __STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __iat - offset __STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX

		MOV EBX,PEHeader
		MOV DWORD PTR[EBX+80h],EAX
		MOV DWORD PTR[EBX+84h],28h
	.endif

;------------------------------------------------------------------
; Fix OEP and IAT / lzma
;

	.if Compressor == 2 && IsDll == 0
		INVOKE ConvertFO2VA,hPackedFileBuff,STUB_OEP
		MOV EBX,PEHeader
		ADD EBX,28h
		MOV DWORD PTR[EBX],EAX
		
		MOV ESI,EAX
		ADD ESI,ImageBase
	
		MOV EDX,STUB_OEP_OFFSET
		LEA EBX,DWORD PTR[EDX+((offset __L_kernel32 - offset __L_STUB_START))]
		LEA ECX,DWORD PTR[EDX+((offset __L_dllName_k - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_locloadlib - offset __L_STUB_START))]
		LEA ECX,DWORD PTR[EDX+((offset __L_FirstThunk_k - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX

		LEA EBX,DWORD PTR[EDX+((offset __L_loadlib - offset __L_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locloadlib - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_gpa - offset __L_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locgpa - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_va - offset __L_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locva - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_vf - offset __L_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locvf - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
		
		LEA EBX,DWORD PTR[EDX+((offset __L_vp - offset __L_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locvp - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA ECX,DWORD PTR[EDX+((offset __L_PE32_IMAGEBASE - offset __L_STUB_START))]
		MOV EAX,ImageBase
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_RELOCATION - offset __L_STUB_START))]
		MOV EAX,RelocationRVA
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_FILTER_CODE_START - offset __L_STUB_START))]
		MOV EAX,FirstSectionOffset
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_FILTER_CODE_SIZE - offset __L_STUB_START))]
		MOV EAX,FirstSectionSize
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_FILTER_CODE_BYTE - offset __L_STUB_START))]
		MOV EAX,FilterByte
		MOV DWORD PTR[ECX],EAX

		LEA EBX,DWORD PTR[EDX+((offset __L_STUB_OEP_JUMP - offset __L_STUB_START))+1]
		LEA ECX,DWORD PTR[EDX+((offset __L_STUB_OEP_JUMP - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,ECX
		ADD EAX,ImageBase
		MOV ECX,PackedOEP
		SUB ECX,EAX
		SUB ECX,5
		MOV DWORD PTR[EBX],ECX

		MOV EAX,RawSize
		LEA EBX,DWORD PTR[EDX+((offset __L_STUB_VA_SIZE - offset __L_STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
		LEA EBX,DWORD PTR[EDX+((offset __L_STUB_VF_SIZE - offset __L_STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_iat - offset __L_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX

		MOV EBX,PEHeader
		MOV DWORD PTR[EBX+80h],EAX
		MOV DWORD PTR[EBX+84h],28h
	.endif

;------------------------------------------------------------------
; Fix OEP and IAT / aplib
;

	.if Compressor == 1 && IsDll == 1
		INVOKE ConvertFO2VA,hPackedFileBuff,STUB_OEP
		MOV EBX,PEHeader
		ADD EBX,28h
		MOV DWORD PTR[EBX],EAX
		
		MOV ESI,EAX
		ADD ESI,ImageBase

		MOV EDX,STUB_OEP_OFFSET
		LEA EBX,DWORD PTR[EDX+((offset __kernel32 - offset __DLL_STUB_START))]
		LEA ECX,DWORD PTR[EDX+((offset __dllName - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX

		LEA EBX,DWORD PTR[EDX+((offset __locloadlib - offset __DLL_STUB_START))]
		LEA ECX,DWORD PTR[EDX+((offset __FirstThunk - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __loadlib - offset __DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __locloadlib - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __gpa - offset __DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __locgpa - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __va - offset __DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __locva - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __vf - offset __DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __locvf - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
		
		LEA EBX,DWORD PTR[EDX+((offset __vp - offset __DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __locvp - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA ECX,DWORD PTR[EDX+((offset __PE32_IMAGEBASE - offset __DLL_STUB_START))]
		MOV EAX,ImageBase
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __RELOCATION - offset __DLL_STUB_START))]
		MOV EAX,RelocationRVA
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __FILTER_CODE_START - offset __DLL_STUB_START))]
		MOV EAX,FirstSectionOffset
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __FILTER_CODE_SIZE - offset __DLL_STUB_START))]
		MOV EAX,FirstSectionSize
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __FILTER_CODE_BYTE - offset __DLL_STUB_START))]
		MOV EAX,FilterByte
		MOV DWORD PTR[ECX],EAX

		LEA EBX,DWORD PTR[EDX+((offset __STUB_OEP_JUMP - offset __DLL_STUB_START))+1]
		LEA ECX,DWORD PTR[EDX+((offset __STUB_OEP_JUMP - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,ECX
		ADD EAX,ImageBase
		MOV ECX,PackedOEP
		SUB ECX,EAX
		SUB ECX,5
		MOV DWORD PTR[EBX],ECX

		MOV EAX,RawSize
		LEA EBX,DWORD PTR[EDX+((offset __STUB_VA_SIZE - offset __DLL_STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
		LEA EBX,DWORD PTR[EDX+((offset __STUB_VF_SIZE - offset __DLL_STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __iat - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX

		MOV EBX,PEHeader
		MOV DWORD PTR[EBX+080h],EAX
		MOV DWORD PTR[EBX+084h],28h
		LEA EAX,DWORD PTR[EDX+((offset __WIN9x_RELOCATION - offset __DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EAX
		MOV DWORD PTR[EBX+0A0h],EAX
		MOV DWORD PTR[EBX+0A4h],8
	.endif

;------------------------------------------------------------------
; Fix OEP and IAT / lzma
;

	.if Compressor == 2 && IsDll == 1
		INVOKE ConvertFO2VA,hPackedFileBuff,STUB_OEP
		MOV EBX,PEHeader
		ADD EBX,28h
		MOV DWORD PTR[EBX],EAX
		
		MOV ESI,EAX
		ADD ESI,ImageBase
	
		MOV EDX,STUB_OEP_OFFSET
		LEA EBX,DWORD PTR[EDX+((offset __L_kernel32 - offset __L_DLL_STUB_START))]
		LEA ECX,DWORD PTR[EDX+((offset __L_dllName_k - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_locloadlib - offset __L_DLL_STUB_START))]
		LEA ECX,DWORD PTR[EDX+((offset __L_FirstThunk_k - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX

		LEA EBX,DWORD PTR[EDX+((offset __L_loadlib - offset __L_DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locloadlib - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_gpa - offset __L_DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locgpa - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_va - offset __L_DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locva - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_vf - offset __L_DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locvf - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
		
		LEA EBX,DWORD PTR[EDX+((offset __L_vp - offset __L_DLL_STUB_START))-2]
		LEA ECX,DWORD PTR[EDX+((offset __L_locvp - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX
		MOV DWORD PTR[ECX],EAX
	
		LEA ECX,DWORD PTR[EDX+((offset __L_PE32_IMAGEBASE - offset __L_DLL_STUB_START))]
		MOV EAX,ImageBase
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_RELOCATION - offset __L_DLL_STUB_START))]
		MOV EAX,RelocationRVA
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_FILTER_CODE_START - offset __L_DLL_STUB_START))]
		MOV EAX,FirstSectionOffset
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_FILTER_CODE_SIZE - offset __L_DLL_STUB_START))]
		MOV EAX,FirstSectionSize
		MOV DWORD PTR[ECX],EAX
		LEA ECX,DWORD PTR[EDX+((offset __L_FILTER_CODE_BYTE - offset __L_DLL_STUB_START))]
		MOV EAX,FilterByte
		MOV DWORD PTR[ECX],EAX

		LEA EBX,DWORD PTR[EDX+((offset __L_STUB_OEP_JUMP - offset __L_DLL_STUB_START))+1]
		LEA ECX,DWORD PTR[EDX+((offset __L_STUB_OEP_JUMP - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,ECX
		ADD EAX,ImageBase
		MOV ECX,PackedOEP
		SUB ECX,EAX
		SUB ECX,5
		MOV DWORD PTR[EBX],ECX

		MOV EAX,RawSize
		LEA EBX,DWORD PTR[EDX+((offset __L_STUB_VA_SIZE - offset __L_DLL_STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
		LEA EBX,DWORD PTR[EDX+((offset __L_STUB_VF_SIZE - offset __L_DLL_STUB_START))+1]
		MOV DWORD PTR[EBX],EAX
	
		LEA EBX,DWORD PTR[EDX+((offset __L_iat - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EBX

		MOV EBX,PEHeader
		MOV DWORD PTR[EBX+80h],EAX
		MOV DWORD PTR[EBX+84h],28h
		LEA EAX,DWORD PTR[EDX+((offset __L_WIN9x_RELOCATION - offset __L_DLL_STUB_START))]
		INVOKE ConvertFO2VA,hPackedFileBuff,EAX
		MOV DWORD PTR[EBX+0A0h],EAX
		MOV DWORD PTR[EBX+0A4h],8
	.endif

;------------------------------------------------------------------
; Write packed file to disk
;
;
	INVOKE UnmapFile

	INVOKE CreateOutFile,addr szOpenFileName
	MOV EAX,hPackedFilePos
	SUB EAX,hPackedFileBuff
	INVOKE WriteFile,hPackedFile,hPackedFileBuff,EAX,addr NumberOfBytesWritten,NULL
	INVOKE CloseOutFile

;------------------------------------------------------------------
; Copy Overlay
;

	.if oOverlay == 1 && OverlayExists > 0
		PUSH offset szSaveOverlay
		CALL _show_log_message
		INVOKE AddOverlay,addr szOpenFileName,addr szTMP
		INVOKE DeleteFile,addr szTMP
	.endif

;------------------------------------------------------------------
; Free memory
;
;

	INVOKE VirtualFree,pRSRCBuff,pRSRCBuffSize,MEM_DECOMMIT
	INVOKE VirtualFree,DLLNameBuff_Base,500000h,MEM_DECOMMIT
	INVOKE VirtualFree,APINameBuff_Base,500000h,MEM_DECOMMIT

	MOV EAX,FileSize
	ADD EAX,500000h
	INVOKE VirtualFree,hPackedFileBuff,EAX,MEM_DECOMMIT

	PUSH offset szFilePacked
	CALL _show_log_message

	INVOKE MapFile,addr szOpenFileName

	MOV EAX,FileSize
	MOV PackedSize,EAX
	PUSH EAX
	PUSH offset PSize_format
	PUSH offset buffer
	CALL wsprintf
	ADD ESP,0Ch
	PUSH 604
	PUSH DWORD PTR DS:[HW]
	CALL GetDlgItem
	PUSH offset buffer
	PUSH EAX
	CALL SetWindowText

	INVOKE UnmapFile

	MOV Ratio,0

	FILD PackedSize
	FILD OriginalSize
	FDIV ST(1),ST(0)
	FILD Hundred
	FMUL ST(0),ST(2)
	FIST Ratio

	PUSH Ratio
	PUSH offset Ratio_format
	PUSH offset buffer
	CALL wsprintf
	ADD ESP,0Ch
	PUSH 605
	PUSH DWORD PTR DS:[HW]
	CALL GetDlgItem
	PUSH offset buffer
	PUSH EAX
	CALL SetWindowText
 ERROR_EXIT:

	PUSH offset szPackEnded
	CALL _show_log_message

	MOV ThreadRunning,0
	POPAD
	RET
;
; Kraj packera
;------------------------------------------------------------------
; Predefinisane funkcije
;------------------------------------------------------------------
CompressRelocations proc dwRelocationOffset:DWORD,dwRelocationSize:DWORD
	LOCAL dwLastRelocPlace :DWORD
	LOCAL dwCompressedReloc :DWORD
	LOCAL dwCompressedRelocPos :DWORD
	LOCAL dwCompressedRelocBase :DWORD
	LOCAL dwThisRelocationSize :DWORD
 	PUSHAD
 	MOV dwCompressedReloc,0
	MOV ESI,dwRelocationOffset
	.if ESI != 0
		INVOKE VirtualAlloc,NULL,dwRelocationSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE
		MOV dwCompressedReloc,EAX
		MOV dwCompressedRelocPos,EAX
		MOV EDI,ImageBase
		.while DWORD PTR[ESI] != 0
			MOV EDX,DWORD PTR[ESI]
			MOV EAX,DWORD PTR[ESI+4]
			MOV dwThisRelocationSize,EAX
			ADD dwThisRelocationSize,ESI

			MOV EAX,dwCompressedRelocPos
			MOV DWORD PTR[EAX],EDX
			MOV DWORD PTR[EAX+4],8
			MOV dwCompressedRelocBase,EAX
			ADD dwCompressedRelocBase,4
			ADD dwCompressedRelocPos,8
		 	MOV dwLastRelocPlace,-1

;			ADD ESI,8
			INVOKE SortRelocations,ESI,DWORD PTR[ESI+4]
			.while DWORD PTR[ESI] != NULL;ESI < dwThisRelocationSize
				MOVZX EAX,WORD PTR[ESI]
				.if EAX != NULL
					MOV EBX,EAX
					SHR EBX,12
					MOV ECX,EBX
					IMUL EBX,1000h
					SUB EAX,EBX
					ADD EAX,EDX
					ADD EAX,ImageBase
					MOV EBX,EAX
					INVOKE ConvertVA2FO,FileMapVA,EAX
					ADD EAX,FileMapVA
					.if ECX == 3
	;					SUB DWORD PTR[EAX],EDI
						SUB EBX,ImageBase
						MOV ECX,EBX
						SUB EBX,EDX
						.if dwLastRelocPlace != -1
							ADD EBX,EDX
							MOV EAX,EBX
							SUB EBX,dwLastRelocPlace
							MOV dwLastRelocPlace,EAX
							.if EBX < 0E0h
								MOV EAX,dwCompressedRelocPos
								MOV BYTE PTR[EAX],BL
								INC dwCompressedRelocPos
								MOV EAX,dwCompressedRelocBase
								INC DWORD PTR[EAX]
							.else
								ADD BX,0E000h
								XCHG BL,BH
								MOV EAX,dwCompressedRelocPos
								MOV WORD PTR[EAX],BX
								ADD dwCompressedRelocPos,2
								MOV EAX,dwCompressedRelocBase
								ADD DWORD PTR[EAX],2
							.endif
						.else
							MOV dwLastRelocPlace,ECX
							.if EBX < 0E0h
								MOV EAX,dwCompressedRelocPos
								MOV BYTE PTR[EAX],BL
								INC dwCompressedRelocPos
								MOV EAX,dwCompressedRelocBase
								INC DWORD PTR[EAX]
							.else
								ADD BX,0E000h
								XCHG BL,BH
								MOV EAX,dwCompressedRelocPos
								MOV WORD PTR[EAX],BX
								ADD dwCompressedRelocPos,2
								MOV EAX,dwCompressedRelocBase
								ADD DWORD PTR[EAX],

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -