minecraft-pi
)。对于这样的程序集给定部分: : a2ed4: e92d45f8 push {r3, r4, r5, r6, r7, r8, sl, lr}
a2ed8: e1a04000 mov r4, r0
a2edc: e59d0024 ldr r0, [sp, #36] ; 0x24
a2ee0: e352007f cmp r2, #127 ; 0x7f
a2ee4: d3a02000 movle r2, #0
a2ee8: c3a02001 movgt r2, #1
a2eec: e1922fa0 orrs r2, r2, r0, lsr #31
a2ef0: 1a000015 bne a2f4c
(根据c ++ filt的
libminecraftpe.so
〜_ZN5Level11hasChunksAtEiiiiii
)。其他ARM / Thumb + Android,它们来自大致相同的代码库。因此,很容易为
Level::hasChunksAt(int, int, int, int, int, int)
构建符号文件并将其在gdb中使用。即使在主要完成汇编时,如果可以在函数名称上设置断点并查看有用的回溯信息也会很有帮助。因此,如果我已经编写了地址到符号名称的映射,该如何生成相应的符号文件二进制文件(可以通过
minecraft-pi
命令加载到gdb中,甚至可以嵌入到可执行文件中?)我熟悉人类可读的调试符号格式,例如Breakpad syms,但是在那里我是否在Stack Exchange上发现了与IDA集成有关的其他问题
symbol-file
,dwarfexport
和pwndebug
(包含在以下链接中)。 florisschabert / unstrip支持ARM,但似乎适合基于Objective-C标准库插入符号,此处不适用。可以将IDA与unstrip
一起使用,但是我更喜欢可以编写脚本的命令行解决方案。在尝试使用有限文档的各种工具之前,我基本上是在寻求有关一般推荐做法的建议。链接:
如何使用GDB?
在GDB中加载用户指定的IDA符号
https://github.com/alschwalm/dwarfexport
https://github.com/pzread / unstrip
https://github.com/florischabert/unstrip
评论
如果您执行手动分析以恢复符号和节信息,这些文章可能会有所帮助:1)em386.blogspot.com/2006/10/…2)em386.blogspot.com/2006/10/…