gpt4 book ai didi

disassembly - 如何更改 Hopper Assembler v3 中的 qword 内存偏移量?

转载 作者:行者123 更新时间:2023-12-02 01:29:13 27 4
gpt4 key购买 nike

所以我得到了以下内容(例如):

0x00000001000022c4    db    "Apple", 0
0x0000000100002347 db "Ducks", 0

在一个程序中,它指的是苹果:
lea    rcx, qword [ds:0x1000022c4] ; "Apple"

现在我喜欢用这个字符串来表示 Ducks,所以我尝试通过说:
lea    rcx, qword [ds:0x100002347]

但是,当我申请时,它会说:
lea    rcx, qword [ds:0x2ace]

它为什么这样做?
我能够通过进入十六进制编辑器找到十六进制值来修复它,看看偏移量有多少并纠正它。但是感觉很麻烦。

最佳答案

Hopper Disassembler V3 是进行逆向工程的好工具。我也有同样的问题。这是我的解决方案。我的演示架构是 x86_64:

00000001000174a6         mov        rsi, qword [ds:0x1004b3040] ; @selector(setAlignment:)

当您看到这一点时,并不意味着您可以将地址(0x1004b3040)修改为您想要的任何内容。
确切的汇编代码是:
00000001000174a6    movq    0x49bb93(%rip), %rsi    ## Objc selector ref: setAlignment:

这意味着您应该转换目标地址 '0x49bb93'
公式是 0x1004b3040 - 00000001000174a6 - 7 = 0x49bb93

所以如果你想修改地址为 100002347 'Ducks',你应该按照这个公式,找到你的指令的字节长度,我的是 '7'

在我的演示中,我想将 @selector(setAlignment:) 修改为 @selector(setHidden:),因此我必须使用以下公式对其进行转换:
0x1004b2238 - 0x1000174a6 - 7 = 0x49ad8b

所以用 48 8b 35 8b ad 49 00 修改十六进制代码,按'command + shift + H'在Hopper中显示十六进制编辑器。

下面是一些演示图片:

Before my work

After my work

我的英语不是很好,所以欢迎回复。

关于disassembly - 如何更改 Hopper Assembler v3 中的 qword 内存偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35101673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com