看流星社区

 找回密码
 注册账号
查看: 6070|回复: 5

VC++如何读内存取出文本如游戏人物名称等。

[复制链接]

该用户从未签到

发表于 2012-5-24 05:19:08 | 显示全部楼层 |阅读模式
看到例子说是直接用整数型变量接ecx寄存器里的值,那么文本如何处理?我直接用文本CSTRING接ECX的值是乱码嘿。。。类似易里的UNICODE转ASCII在VC是如何处理?
路过的看到的有空的都谢谢了呵。

DWORD hp1,hp2,mp1,mp2,level;
        float pos1,pos2;
        CString name;
        _asm
        {
                mov eax,0x00c454c4
                        mov eax,[eax]
                        add eax,0x1c
                        mov eax,[eax]
                        add eax,0x28
                        mov eax,[eax]
                        add eax,0x7c
                        mov ecx,[eax]
                        mov pos1,ecx//[[[[基址]+1C]+28]+7C]        X坐标
                        add eax,0x8
                        mov ecx,[eax]
                        mov pos2,ecx//[[[[基址]+1C]+28]+84] Y坐标
                        add eax,0x1ec
                        mov ecx,[eax]
                        mov level,ecx//[[[[基址]+1C]+28]+270] 等级
.........................................

该用户从未签到

发表于 2012-5-24 08:42:33 | 显示全部楼层
LPCSTR name;
就是一个ANSI字符串

该用户从未签到

发表于 2012-5-24 12:24:56 | 显示全部楼层
如果你要把等级转换成文本 则 name.Format("%x",level);
如果你要把名字存入 name变量中 则 mov name,ecx(保存有名字变量的寄存器)

该用户从未签到

 楼主| 发表于 2012-5-24 13:13:52 | 显示全部楼层
本帖最后由 2420683310 于 2012-5-24 15:35 编辑

哈哈。回帖真速度。谢谢雨夜和jj3341332!
怪我没说清贴全。。
教程是在EDIT下建立变量来接收显示值,如红是DWORD m_e2hp1来接收hp1,float m_e4pos1来接收X坐标pos1,等,这个名字如何处理呢?EDIT组件下没有LPCSTR这种变量类型。
1 我用CString   m_e1name= CString  name;(为表述方便)乱码,
2 我据雨夜提示用CString   m_e1name= LPCSTR name;乱码,CString   m_e1name= (CString   ) name;乱码
3  jj3341332你说的FORMAT,这是把取出的当字符串,还是的一堆整数啊。。没变汉字。。



        DWORD hp1,hp2,mp1,mp2,level;
        float pos1,pos2;
        LPCSTR name;
        //CString name;
        _asm
        {
                mov eax,0x00c454c4
                        mov eax,[eax]
                        add eax,0x1c
                        mov eax,[eax]
                        add eax,0x28
                        mov eax,[eax]
                        add eax,0x7c
                        mov ecx,[eax]
                        mov pos1,ecx//[[[[»ùÖ·]+1C]+28]+7C]        X×ø±ê
                        add eax,0x8
                        mov ecx,[eax]
                        mov pos2,ecx//[[[[»ùÖ·]+1C]+28]+84] Y×ø±ê
                        add eax,0x1ec
                        mov ecx,[eax]
                        mov level,ecx//[[[[»ùÖ·]+1C]+28]+270] µÈ¼¶
                        add eax,0xc
                        mov ecx,[eax]
                        mov hp1,ecx//[[[[»ùÖ·]+1C]+28]+27C] µ±Ç°ºì
                        add eax,0x4
                        mov ecx,[eax]
                        mov mp1,ecx//[[[[»ùÖ·]+1c]+28]+280] µ±Ç°À¶
                        add eax,0x20
                        mov ecx,[eax]
                        mov hp2,ecx//[[[[»ùÖ·]+1C]+28]+2A0] ×î´óºì
                        add eax,0x4
                        mov ecx,[eax]
                        mov mp2,ecx//[[[[»ùÖ·]+1C]+28]+2A4] ×î´óÀ¶
                        add eax,0x240
                        mov ecx,[eax]
                        mov name,ecx//[[[[»ùÖ·]+1C]+28]+4e4] ½ÇÉ«Ãû
                       
                       
                       
        }
        m_e1name=name;
        m_e2hp1=hp1;
        m_e3mp1=mp1;
        m_e4pos1=pos1;
        m_e5lev=level;
        m_e6pos2=pos2;
        m_e7hp2=hp2;
        m_e8mp2=mp2;
        UpdateData(FALSE);

该用户从未签到

发表于 2012-5-25 00:13:53 | 显示全部楼层
宽字符问题。。。WideCharToMultiByte ()

该用户从未签到

发表于 2012-5-27 00:24:12 | 显示全部楼层
WCHAR name[100];//宽字符

buffer=(LPVOID)name;//名字
        ::ReadProcessMemory(wmHdl,LPCVOID(nameAdr+0),buffer,100,&nSize);//读取人物名字
CString base_info=name;
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-29 09:21

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表