首页
社区
课程
招聘
[旧帖] 请教一个关于汇编写内存的代码的问题 0.00雪花
发表于: 2010-8-4 13:31 4643

[旧帖] 请教一个关于汇编写内存的代码的问题 0.00雪花

2010-8-4 13:31
4643
在内存中有两个字符串,一个是内存地址:例如00401006,另一个是一串十六进制码例如1235BCD,知道这两个字符串的地址,如何用WriteProceedMemory将十六进制字符串写到地址字符串指定的内存中?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 16
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
问题描述的不清楚
是进程a中的指定字符串 写到  进程b的指定内存中去吗
2010-8-4 16:00
0
雪    币: 123
活跃值: (95)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
不是,进程本身操作,只是要写的地址和值都是从ini文件读入的,是字符串形式。
在整一个usp10.dll截持,从ini里面读修改地址和值后动态修改主程序里的代码。
2010-8-4 16:25
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
内存是读可执行不可写的保护状态吧。
如果要突破需要0环特权吗?
只能通过驱动实现?
2010-8-4 16:59
0
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主确定要写入的是字符串?
我拿Delphi举例吧。Delphi里面有个函数IntToHex可以将10进制的数值转换成16进制并以字符的形式输出,把这个输出结果写到内存中就可以了。代码就不写了,很简单的。而且我不确定你学的是Delphi。
2010-8-4 19:47
0
雪    币: 123
活跃值: (95)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
还是没人理解,我用的是masm32汇编,同时进程内存可写,只是写入的地址和值会因为"高高低低"原因出现位置不对和写入的值不对。希望有什么简单方法实现。
2010-8-5 22:18
0
雪    币: 998
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
位置不对?不知道你是啥意思,最好给个例子。高高低低那个你自己调整一下原始数据不就行了么
2010-8-5 23:16
0
雪    币: 401
活跃值: (10)
能力值: ( 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

是这个意思么?
2010-8-6 00:34
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
噢,要用WriteProcessMemory啊,“高高低低”是什么意思?小端存储?如果是的话,就用int *指针指向00401006,char *指向字符串就是了。
2010-8-6 00:47
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不知道什么是高高低低

现在知道两个字符串本身的地址,直接把记录地址的字符串转成十六进制,然后直接写不行吗
2010-8-6 07:47
0
雪    币: 459
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
高地址对高字节。低地址对低字节。
2010-8-6 08:04
0
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
进程本身操作?就不需要用到WriteProceedMemory啊。
asm32的话就更简单了啊。直接先把地址读到ebx里面。再[ebx+ n]就可以了ebx当基址啊
如果非要用到WriteProceedMemory也可以的。并没有你说的高高低低之分。
因为当把WriteProceedMemory用来远程线程的控制的时候往目标进程里面写入数据的时候那就不只是你这么几个字符串了。那全都是一整个需要执行的线程代码了。

;楼下接力
2010-8-20 00:32
0
游客
登录 | 注册 方可回帖
返回
//