当前位置:  开发笔记 > 编程语言 > 正文

在正在运行的进程中给出其地址,在可执行文件中查找指令?

如何解决《在正在运行的进程中给出其地址,在可执行文件中查找指令?》经验,为你挑选了1个好方法。

我正在修改一个旧的放弃软件游戏,以获得无限生命.

具有该指令的地址dec ecx与其在.exe调试中的位置不同.

我记得我的一位老朋友告诉我,有一个公式可以通过.exe中的指令获得"真实"地址.作弊引擎给了我内存地址.我记得在数学公式中,我需要得到模块,在OllyDbg我得到它.但我不记得这个公式.有人知道那个数学公式怎么样?这个公式非常简单!还有另一种方法可以让文件位置永久修改.exe吗?



1> Neitsa..:

有一个"公式",但你实际上需要查看可执行文件(虽然这个公式可以根据一些假设进行简化).

    获取您感兴趣的指令/数据的内存地址.[ VA ]

    获取指令/数据所在模块的基址.[ MODBASE ]

    从VA中减去MODBASE,即可获得所谓的[ RVA ]:

    VA - MODBASE = RVA

    使用PE文件解析器/编辑器打开二进制文件(例如*.exe或*.dll)并查看节标题.

    查找您的RVA所在的部分.

    找到RVA所在的部分后,获取VirtualAddress部分.[ SECRVA ]

    从RVA中减去SECRVA,然后获得[ OFFSET ]

    RVA - SECRVA = OFFSET

    获取您在5处找到的部分的RawAddress [ SECRAWADDR ].

    将[ OFFSET ] 添加到[ SECRAWADDR ],结果是您在二进制文件中搜索的指令/数据的偏移量

    OFFSET + SECRAWADDR = INSDATAOFFSET(磁盘上文件中的偏移量)

假设

通常(我经常坚持,有时情况并非如此),[SECRVA]第一部分为0x1000 - 恰好是代码部分 - 其[SECRAWADDR]将为0x400.

因此,如果要根据内存中的地址搜索指令的偏移量,通常可以假设:

SECRVA = 0x1000

SECRAWADDR = 0x400

基于cmd.exe的示例.

假设我0x1C34B0在程序加载到内存时正在搜索此代码:

CPU Disasm
Address   Hex dump          Command                                  Comments
001C34B0  /$  E8 B3040000   CALL 001C3968
001C34B5  \.^ E9 2EFEFFFF   JMP 001C32E8

注意指令操作码(字节)是: 0xE8B3040000

    VA = 0x1C34B0

    在内存中搜索模块库(使用调试器或ProcessExplorer):

CMD基地址

MODBASE = 0x1B0000

    VA - MODBASE = RVA ; 0x1C34B0 - 0x1B0000 = 0x134B0;RVA = 0x134B0

    在PE编辑器中打开二进制文件(我使用CFF资源管理器):

节标题

    让我们看看0x134B0在哪个部分:

第一部分是.text,其VirtulAddress是0x1000,其VirtualSize是0x23E4C(因此该部分的末尾是0x1000 + 0x23E4C = 0x24E4C).

在0x1000和0x24E4C之间是0x134B0吗?

0x1000 >= 0x134B0 < 0x24E4C - > True:所以地址位于.text部分.

注意:对每个部分重复相同的过程,直到找到正确的部分.

    SECRVA = 0x1000 (部分虚拟地址)

    RVA - SECRVA = OFFSET ;0x134B0 - 0x1000 = 0x124B0

    SECRAWADDR = 0x400 (部分原始地址)

    OFFSET + SECRAWADDR = INSDATAOFFSET;0x124B0 + 0x400 = 0x128B0

如果我们查看0x128B0文件,我们有:

二进制文件中的偏移量

所以我们发现file(0xE8B3040000)中的字节与内存中的字节完全相同.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有