【问题标题】:Reverse-Engineering Memory Load Techniques?逆向工程内存加载技术?
【发布时间】:2016-08-10 22:13:46
【问题描述】:

我正在尝试对游戏进行逆向工程(经许可)。我正在使用 IDA Pro。函数是sub_xxxxx,表示它们是受保护的函数。

但是,当查看唯一的交叉引用时,作为函数名称的字符串以下列方式显示:

__data:xxxxxxxx                 DCD aEcdh_compute_k     ; "ECDH_compute_key"
__data:xxxxxxxx                 DCB   0
__data:xxxxxxxx                 DCB 0x40
__data:xxxxxxxx                 DCB   12
__data:xxxxxxxx                 DCB 0x3B

为了安全起见(OCD)更改了一些数字,包括 DCB

我曾尝试使用40 12 3B 作为偏移量。但是,偏移量将我带到了随机 loc_xxxxx 的中间,以及其他人。

我的问题是,我将如何找到实际功能在哪里?是从.data 段顶部的偏移量吗?还是来自实际的声明字符串本身?

我不期望或不需要完整的答案;显然这在过去可能没有遇到过,而且我可能没有提供足够的信息。 (如果您需要更多信息,请询问,谢谢)。基本上,我在问,“接下来我应该尝试什么?”,试图找到最有可能的答案。谢谢。

【问题讨论】:

    标签: reverse-engineering decompiling ida


    【解决方案1】:

    您忽略了处理器字节序,通常是little endian

    点击 D 两次(一次将数据表示从单字节转换为字,另一次将其从字转换为双字)将为您将数据转换为双字。或者,您也可以点击 O 将数据表示直接转换为偏移量(在大多数架构上是大小为 dword)

    这很可能表明您偏移到地址0x003b1240,这可能是您正在寻找的地址。

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 2020-06-30
      • 2015-08-11
      • 2021-07-02
      • 2010-09-09
      • 2011-04-22
      • 2012-11-09
      • 2010-10-15
      • 2012-08-26
      相关资源
      最近更新 更多