文章目录
关于读取内存字符串问题
提示:这里可以添加技术概要
核心源码
将指针指向怪物名的首地址,然后读这个指针,就将怪物名取出来了
用内联汇编也很简单
人名定义成pchar(需申请内存),或char数组,一般避免使用string。当然人名也有widechar(为宽字符)的
下面集合一下vc和delphi在这方面的用法:
读人物血值:
复制代码
- dword xue
_asm
{
mov eax,0x761c2c
mov eax,[eax]
mov eax,[eax+0x6c
mov eax,[eax+0x48]
mov xue,eax
}
读人物名:
复制代码
- name: pchar;
begin
getmem(name,16);
name:= pchar($761c2c);
freemem(name);
edit1.text := name;
end;
如果是用汇编,定义成pchar就可以了:
复制代码
- NAME:PCHAR;
ASM
MOV EAX,$401760
MOV NAME,EAX
END;
EDIT3.TEXT := NAME;
delphi的写法是:
复制代码
- Pinteger($12345678)^; 读取int类型
PByte($12345678)^; 读取Byte类型
PDWORD($12345678)^; 读取DWORD类型
一次写完:
复制代码
- val := PDWORD(PDWORD(PDWORD(adr)^ + $240)^ + 4)^;
name := pchar(val);
showmessage(name);