能力值:
( LV2,RANK:10 )
|
-
-
2 楼
问题描述的不清楚
是进程a中的指定字符串 写到 进程b的指定内存中去吗
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
不是,进程本身操作,只是要写的地址和值都是从ini文件读入的,是字符串形式。
在整一个usp10.dll截持,从ini里面读修改地址和值后动态修改主程序里的代码。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
内存是读可执行不可写的保护状态吧。
如果要突破需要0环特权吗?
只能通过驱动实现?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
楼主确定要写入的是字符串?
我拿Delphi举例吧。Delphi里面有个函数IntToHex可以将10进制的数值转换成16进制并以字符的形式输出,把这个输出结果写到内存中就可以了。代码就不写了,很简单的。而且我不确定你学的是Delphi。
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
还是没人理解,我用的是masm32汇编,同时进程内存可写,只是写入的地址和值会因为"高高低低"原因出现位置不对和写入的值不对。希望有什么简单方法实现。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
位置不对?不知道你是啥意思,最好给个例子。高高低低那个你自己调整一下原始数据不就行了么
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
xor ecx,ecx
cld
mov esi,源地址 ;存放1235BCD的那个地址
mov edi,目标地址 ;存放00401006的那个地址
mov cx,LENGTHOF 字符串
Repeat:
lodsb
mov byte ptr [edi],al
inc edi
loop Repeat
是这个意思么?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
噢,要用WriteProcessMemory啊,“高高低低”是什么意思?小端存储?如果是的话,就用int *指针指向00401006,char *指向字符串就是了。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
不知道什么是高高低低
现在知道两个字符串本身的地址,直接把记录地址的字符串转成十六进制,然后直接写不行吗
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
高地址对高字节。低地址对低字节。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
进程本身操作?就不需要用到WriteProceedMemory啊。
asm32的话就更简单了啊。直接先把地址读到ebx里面。再[ebx+ n]就可以了ebx当基址啊
如果非要用到WriteProceedMemory也可以的。并没有你说的高高低低之分。
因为当把WriteProceedMemory用来远程线程的控制的时候往目标进程里面写入数据的时候那就不只是你这么几个字符串了。那全都是一整个需要执行的线程代码了。
;楼下接力
|
|
|