LK
分区进行分析。目的是查明处理fastboot命令的例行程序。剥离前512个字节会产生明显有意义的反汇编。但是,字符串fastboot: processing commands\n
的交叉引用看起来不是很有意义。这使我相信,可能需要将图像重新定位到某个地址才能正确引用。知道我该怎么做吗?#1 楼
当我需要做类似的事情时,我尝试执行以下操作:我找到了所有已知的
LDR
宏(据我所知它们不是相对的)我找到了地址一些必须有机会被直接引用的字符串(大于10,小于100)
之后,我用步骤4强制使用了所有32位地址范围,以找到符合要求的移位
LDR
正确引用的最大字符串数。当然,这可以使用IDAPython来完成。从这个移位中可以得出地址。
此外,您可以使用跳转和带有绝对寻址的调用来交叉引用函数序言。
顺便说一句,如果我没记错的话,您可能会在图像的开头找到一个中断表-绝对跳转如下例所示:
00000000 LDR PC, =Reset
00000004 LDR PC, =Undef
00000008 LDR PC, =SVC
0000000C LDR PC, =PrefAbort
00000010 LDR PC, =DataAbort
00000014 NOP
00000018 LDR PC, =IRQ
0000001C LDR PC, =FIQ
加载的地址的值可能会提示要搜索的区域。
评论
创造性的方法!
– 0xC0000022L♦
18年6月17日在20:23
评论
这看起来像一个开发问题,该问题不在本网站上,因此我投票关闭它。您可能会在Stack Overflow上问它。这里使用哪个处理器?
ARM 32,Little Endian
我不会低估从位置0开始的图像,因为那是ARM存储一些与硬件相关的信号的跳转地址的位置。您的字符串引用对我来说似乎很好;加载当前指令和字符串之间的偏移量,然后添加PC是获取位置无关代码的标准ARM方法。有关此问题的更多信息,请点击此处。