386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data?
stStartUp STARTUPINFO <?> ;装载结构
stProcInfo PROCESS_INFORMATION <?>
stProcess PROCESSENTRY32 <?>
.data
dbPatched db 75h,0Ch;jnz的机器码,也就是我们要写入的内容
szFilename db 'Test.exe',0
.code
Start:
invoke GetStartupInfo,addr stStartUp
invoke CreateProcess,offset szFilename,NULL,NULL,NULL,NULL,\
NORMAL_PRIORITY_CLASS or CREATE_SUSPENDED,NULL,NULL,\
offset stStartUp,offset stProcInfo ;利用CreateProcess打开拥有父进程的权限
invoke WriteProcessMemory,stProcInfo.hProcess,\
00401015h,addr dbPatched,2,NULL;开始在00401015h位置写入补丁指令,其中stProcInfo.hProcess就是继承父权限的句柄
invoke ResumeThread,stProcInfo.hThread;创建线程执行补丁
invoke CloseHandle,stProcInfo.hProcess;关闭句柄
invoke CloseHandle,stProcInfo.hThread;关闭句柄
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end Start
我用RadASM编译是出现了如下错误:
E:\RadASM\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"E:\RadASM\Masm32\Include" "内存补丁.asm"
Assembling: 内存补丁.asm
内存补丁.asm(13) : error A2044: invalid character in file
内存补丁.asm(22) : error A2006: undefined symbol : stStartUp
内存补丁.asm(22) : error A2114: INVOKE argument type mismatch : argument : 1
内存补丁.asm(23) : error A2006: undefined symbol : stStartUp
内存补丁.asm(23) : error A2114: INVOKE argument type mismatch : argument : 9
构建时发生错误.
总共编译时间 266 毫秒
我觉得应该没错啊,知道的人请帮帮我,谢谢!
[课程]Android-CTF解题方法汇总!