盾山666号 2024-08-05 10:54 采纳率: 50%
浏览 24

易语言和ce读取模块基址不一样

各位我能问个低级问题吗?我易语言在读取进程模块地址时读取到模块基址为DC790000但是在cheatengine中该模块基址为7FF8DC790000?,我也考虑过可能因为游戏是64位,但我用x64读取的模块来读取该模块基址无法运行,就直接出窗口点一下按钮1就卡住(我设置的点击按钮1读取内存)

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-08-06 09:25
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析:您在使用易语言读取进程模块地址时,发现和Cheat Engine 中显示的模块基址不一致。可能是由于不同工具对模块基址的显示格式不同,也可能是因为游戏是64位导致读取错误。您尝试使用x64读取模块基址时出现程序崩溃。 解决方案:您可以尝试以下方法解决问题:
    1. 确认游戏是否为64位:在处理64位游戏时,需要使用对应的读取方式和数据类型。您可以确认游戏的位数,然后选择合适的读取方式。
    2. 检查数据格式:不同工具对模块基址的显示格式可能有差异,需要根据具体情况进行数据格式转换。比如去掉前缀或补充必要的信息。
    3. 调试程序:使用调试工具或输出调试信息来查看程序运行过程中的错误信息,帮助定位问题并进行修复。 案例代码(示例):
    // 读取模块基址的代码片段
    var
        hProcess, hModule: long;
        moduleBaseAddr: string;
    begin
        // 假设hProcess为进程句柄,hModule为模块句柄
        // 读取模块句柄的基址
        GetModuleBase(hProcess, hModule, @moduleBaseAddr);
        
        // 对模块基址进行转换处理
        if Pos('7FF8', moduleBaseAddr) > 0 then
            Delete(moduleBaseAddr, 1, 4); // 删除前缀'7FF8'
        // 此处可以根据具体情况添加其他处理逻辑
        
        // 输出处理后的模块基址
        MessageBox(0, moduleBaseAddr, 'Module Base Address', 0);
    end;
    

    通过以上方法,您可以尝试解决易语言读取模块基址与Cheat Engine 显示不一致的问题,并确保程序正常运行。希望能帮到您!如果还有其他问题,请继续咨询。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月5日