Assembly 如何判断手臂功能是否用拇指书写

Assembly 如何判断手臂功能是否用拇指书写,assembly,arm,self-modifying,Assembly,Arm,Self Modifying,我正在写hooker代码,这是补丁ARM函数的开场白。由于ARM可以在两种模式下运行,Hooker必须选择正确的操作码(thumb或not)来修补序言 如何确定修补目标是使用thumb还是32位ARM指令?在我的例子中,我是在linux内核中工作的。在查找kprobe()代码之后,我找到了CONFIG\u THUMB2\u内核宏 由于它不是通用的解决方案,我可以解决该宏的问题,以决定在编译时修补的操作码。您有链接器生成的函数符号地址吗?如果是这样,没有什么能阻止你做与核心完全相同的事情;查看分支

我正在写hooker代码,这是补丁ARM函数的开场白。由于ARM可以在两种模式下运行,Hooker必须选择正确的操作码(thumb或not)来修补序言


如何确定修补目标是使用thumb还是32位ARM指令?

在我的例子中,我是在linux内核中工作的。在查找kprobe()代码之后,我找到了CONFIG\u THUMB2\u内核宏


由于它不是通用的解决方案,我可以解决该宏的问题,以决定在编译时修补的操作码。

您有链接器生成的函数符号地址吗?如果是这样,没有什么能阻止你做与核心完全相同的事情;查看分支目标的LSB。否则,“视情况而定”,你需要提供更多的细节。确保你的hooker代码没有感染病毒。它会蔓延到每一个地方。有多重含义的东西很难理解。您可以在两种模式下放置一条将出现故障的指令。在第一次执行时,陷阱处理程序将检查模式并为该模式插入正确的钩子代码。这是有利的,因为它是懒惰的,并且可能永远不会遇到某些错误。