能力值:
( LV10,RANK:170 )
|
-
-
2 楼
HOOK前先设置内存权限
|
能力值:
( LV9,RANK:160 )
|
-
-
3 楼
呵呵.什么意思?是VirtualProtectEx吗?这个也试过,还是INVAILD ADDRESS
|
能力值:
( LV9,RANK:160 )
|
-
-
4 楼
附上段程序
.386
.model flat, stdcall ;32 bit memory model
option casemap :none ;case sensitive
include windows.inc
include kernel32.inc
include user32.inc
include Comctl32.inc
include shell32.inc
includelib kernel32.lib
includelib user32.lib
includelib Comctl32.lib
includelib shell32.lib
.data?
startinfo STARTUPINFO <>
ip PROCESS_INFORMATION <>
.data
buffer db 'c:\windows\notepad.exe',0
dll db 'kernel32.dll',0
procx db 'CopyFileExW',0
INT03 DB 0CCH
.code
start:
invoke GetStartupInfo,addr startinfo
invoke CreateProcess,addr buffer,NULL,NULL,NULL,FALSE,NULL,NULL,NULL,addr startinfo,addr ip
invoke SuspendThread,ip.hThread ;这个是后来的办法,也不行,之前是CREATEPROCESS上设置FLAG
invoke GetModuleHandle,addr dll
invoke GetProcAddress,eax,addr procx
mov edi,eax
invoke WriteProcessMemory,ip.hProcess,edi,addr INT03,1,NULL //这里不行....
invoke ResumeThread,ip.hThread
end start
|
能力值:
( LV10,RANK:170 )
|
-
-
5 楼
没有碰到过,望大牛来解决
|
能力值:
( LV10,RANK:170 )
|
-
-
6 楼
invoke GetModuleHandle,addr dll
应该是这个原因。
GetModuleHandle只能本进程能使用。
想远程使用,得先注入。
|
能力值:
( LV9,RANK:160 )
|
-
-
7 楼
可是在一个系统中难道API的装载地址不一样吗?如果注入,是不是要先在OEP那里修改一下?谢谢:)
|
能力值:
( LV10,RANK:170 )
|
-
-
8 楼
可是在一个系统中难道API的装载地址不一样吗?
是的,不一样
没个进程有自己独立的4G空间。
注入不需要修改OEP,你找一下注入的方法吧
|
能力值:
( LV9,RANK:160 )
|
-
-
9 楼
谢谢
Thanks a lot .....
|
能力值:
( LV6,RANK:90 )
|
-
-
10 楼
同一系统下。。。正常情况下系统API地址是一样的。。。
|
能力值:
( LV9,RANK:160 )
|
-
-
11 楼
那就比较奇怪了…………
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
先将自己提升到debug权限试试
|
能力值:
( LV9,RANK:160 )
|
-
-
13 楼
LS指的是标上DEBUG的FLAG吗?试过了,还是挂,很郁闷.接连换了很多个API都不可以...
为啥OLLYDBG就可以捏?
郁闷不解
|
能力值:
( LV7,RANK:100 )
|
-
-
14 楼
的确是一样的,但是windows98之后,ms为了提高系统安全性,做了如下改动:
当你对某一个DLL进行写操作的时候,系统会重新划出一块内存,将原来的DLL拷贝过来,然后挂到进程空间里面替换原来的。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
我试了下`VC下正常
|
能力值:
( LV9,RANK:160 )
|
-
-
16 楼
那请教一下这位大牛,为什么我这么写就挂了呢?应该怎么写呢?
还有LS的那位,为什么VC就没问题,相反底层的汇编就有问题呢?
|
能力值:
( LV13,RANK:530 )
|
-
-
17 楼
PROCESS_SUSPENDED这个时候 应该还没有把kernel32.dll装载进进程空间吧。我感觉是这样 我记得是这样。 一般我都是在EntryPoint改一个jmp跳到 自己的code中然后再HOOK 操作。
补充一点,这个跟操作系统有关系~ 不排除有些杀毒软件为了防止注入而禁止写内存。
其次就是Vista 开始 好像貌似 kernel32.dll已经装入了。, 凭影响是这样。。错了就错了吧。。
|
能力值:
( LV9,RANK:160 )
|
-
-
18 楼
呵呵,谢谢楼上
|