OD如何给指定地址赋字符串值
本帖最后由 lyrong2008 于 2024-4-15 19:19 编辑edx=02B2BCA4, (UNICODE "D:\123\321\1\")
eax=02B2A6CC
如何修改02B2A6CC的值为(UNICODE "D:\123\321\1\")
这段看似简单的代码困扰了我几天了,对于字符串赋值,如何赋值给一个指定的地址呢?
如果赋值给寄存器,只需要mov eax,edx,但是是往eax=02B2A6CC里头赋值,eax的值仍旧是02B2A6CC。
希望贵论坛的大哥大姐帮帮忙哈!真心尝试了很久然后出错了! 本帖最后由 lies2014 于 2024-4-14 20:18 编辑
mov esi,edx ;源地址
mov edi,eax ;目的地址
mov ecx,0xE ;字符串长度(含结尾的 00 00)
cld
rep movsw ;复制字符串(Unicode为双字节) lyrong2008 发表于 2024-4-14 20:20
谢谢大哥,如果字符串长度是变动的,要怎么修改呢?
有计算字符串的办法吗?再辛苦下了!!!
00402BB0xor ecx,ecx
00402BB2mov bx,word ptr ds:
00402BB5inc ecx ;长度(含结尾的 00 00)
00402BB6add edx,0x2 ;单字节字符串改为1
00402BB9cmp bx,0x0
00402BBDjne 0x402BB2 edx=02B2BCA4, (UNICODE "D:\123\321\1\")
这里的02B2BCA4指向的是内存地址,定位到这个内存地址,修改内容即可。 WFXL 发表于 2024-4-14 19:40
edx=02B2BCA4, (UNICODE "D:\123\321\1\")
这里的02B2BCA4指向的是内存地址,定位到这个内存地址,修改内 ...
谢谢兄弟,我想应用mov等汇编指令修改,想在程序内部处理!{:1_893:} mov eax,edx之后,02B2A6CC的内容不就变成了(UNICODE "D:\123\321\1\")了吗? lyrong2008 发表于 2024-4-14 19:43
谢谢兄弟,我想应用mov等汇编指令修改,想在程序内部处理!
你再mov字符串也是需要一段内存来放啊 Panel 发表于 2024-4-14 20:09
你再mov字符串也是需要一段内存来放啊
是的,但是如何让02B2A6CC这个内存的地址内容变成"D:\123\321\1\"呢?
希望帮忙解答下哈!
lies2014 发表于 2024-4-14 20:16
mov esi,edx ;源地址
mov edi,eax ;目的地址
mov ecx,0xD ;字符串长度( ...
谢谢大哥,如果字符串长度是变动的,要怎么修改呢?
有计算字符串的办法吗?再辛苦下了!!!
比如 edx=02B2BCA4, (UNICODE "D:\123\321\1\xxx\xxx\xxx")
lyrong2008 发表于 2024-4-14 20:13
是的,但是如何让02B2A6CC这个内存的地址内容变成"D:\123\321\1\"呢?
希望帮忙解答下哈!
写内存啊
页:
[1]
2