📄 patcher.asm
字号:
;@GOTO TRANSLATE
.586P
.MODEL FLAT, STDCALL
OPTION CASEMAP: NONE
INCLUDE WINDOWS.inc
UNICODE = FALSE
INCLUDE APIMACRO.mac
INCLUDE ApiHooks.inc
INCLUDELIB iKERNEL32.lib
INCLUDELIB iUSER32.lib
;------------------------------------------------------------------
.CODE
DllMain:
PUSHp ESI, EDI
DEC FirstTime ;work one time only
JL @F
iWin32i GetModuleHandle, NULL
TEST EAX, EAX
JE @F
MOV EDI, EAX
ADD EDI, PatchRVA
PUSH ECX
iWin32 VirtualProtect, EDI, PatchSize, PAGE_READWRITE, ESP
TEST EAX, EAX
POP EDX
JE @F
PUSHp EDI, EDI
MOV ESI, OFFSET OrigValues
MOV ECX, PatchSize
REPE CMPSB
POP EDI
JNE ReturnPg
MOV ESI, OFFSET WantedValues
MOV ECX, PatchSize
REP MOVSB
ReturnPg:
POP EDI
PUSH EAX
iWin32 VirtualProtect, EDI, PatchSize, EDX, ESP
POP EAX
@@:
POPc ESI, EDI
MOV EAX, TRUE
RET 12
ALIGN 4
FirstTime DWORD 1
OrigValues BYTE "X"
WantedValues BYTE "u"
PatchSize EQU SIZEOF OrigValues
PatchRVA EQU 103FH
;------------------------------------------------------------------
BeginHooks Patcher
EndHooks
;------------------------------------------------------------------
END DllMain
:TRANSLATE
@ECHO OFF
ML /c /coff /nologo Patcher.bat
LINK3 Patcher /nologo /DLL /EXPORT:Patcher,@1,NONAME /SUBSYSTEM:WINDOWS /MERGE:.idata=.text /MERGE:.rdata=.text /SECTION:.text,WRE /IGNORE:4078,4086 /BASE:0X77100000
DEL Patcher.obj
DEL Patcher.exp
DEL Patcher.lib
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -