能力值:
( LV2,RANK:10 )
|
-
-
2 楼
呵呵,这个问题有3个解决办法:
1,有源代码。在连接的时候将代码段设置为可写
2,没有源代码。分析查看PE文件格式,将代码段设置为可写
3,已经运行的进程,可以用 WriteProcessMemory 函数将代码段设置为可写
可以看看我的这个例子:
http://bbs.pediy.com/showthread.php?t=51024
;FASM汇编 自修改 SMC 代码测试
format pe console
entry start
include 'Win32AXP.inc'
;include 'List.inc'
section '.text' code readable writeable executable ;确保代码段有写入权限,必须的
start:
call f1
call f2
;memcpy(f1.Start,f2.Start,f2.CodeLen)
mov esi,f2.Start
mov edi,f1.Start
mov ecx,f2.End-f2.Start
rep movsb
;再次调用f1和f2
call f1
call f2
ret
f1:
.Start=$
cinvoke printf,buf1
ret
.End=$
;确保有足够的空间来存放f2的代码
repeat (f2.End-f2.Start)-(f1.End-f1.Start)
nop
end repeat
f2:
.Start=$
cinvoke printf,buf2
ret
.End=$
data import
library msvcrt,'msvcrt.dll'
import msvcrt,\
printf,'printf'
end data
buf1 db "SMC 前",0dh,0ah,0
buf2 db "SMC 后",0dh,0ah,0
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
用这个VirtualProtect函数修改读写权限
再改代码就OK
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢楼上的,我回去试下
|
|
|