ARM64挂钩:在内存中插入一个跳转

时间:2017-02-01 14:44:34

标签: android assembly memory hook arm64

我试图在64位ARM Android设备上连接libssl.so中提供的SSL_do_handshake函数,直到现在我有:

  • libssl.so的地址(在proc // maps中找到)
  • SSL_do_handshake的偏移量(在libssl.so中找到)
  • SSL_do_handshake的绝对地址(address_of_libssl + offset_of_SSL_do_handshake)

我正在做的是将指令保存在libssl.so的绝对地址(用于恢复)并用我的指令覆盖它们(用于跳转):

  • LDR X9,#8
  • Br X9
  • 跳转地址7f75a5b890

详细说明我在内存中保存的是49000058 20011fd6 90b8a5757f如果我在覆盖后查看内存我找到了我的指令和地址。如果我尝试执行它并调用SSL_do_hanshake,我会在跳转之前崩溃。 我使用thumb32使用相同的方法但不同的指令为ARMv7做了同样的事情:

  • ldr pc [pc,#0]
  • 跳转地址(f36e240d)

在内存dff800f0 0d246ef3中它有效。 我知道我做错了什么?

0 个答案:

没有答案