Tib*_*ibi 4 x86 assembly arm x86-64
假设有两种可能的架构,ARM和x86.有没有办法检测代码运行的系统,从汇编/机器代码实现这样的事情?
if (isArm)
jmp to arm machine code
if (isX86)
jmp to x86 machine code
Run Code Online (Sandbox Code Playgroud)
我知道ARM机器代码与x86机器代码有很大不同.我正在考虑的是一些精心设计的汇编指令,它们会产生相同的二进制机器代码.
Mar*_*oom 18
假设您已经处理了所有其他差异1并且您只需要编写一个小的多语言蹦床,您可以使用以下操作码:
EB 02 00 EA
Run Code Online (Sandbox Code Playgroud)
当放在地址0时,对于ARM(非拇指),转换为:
00000000: b 0xbb4
00000004: ...
Run Code Online (Sandbox Code Playgroud)
但对于x86(实模式),转换为:
0000:0000 jmp 04h
0000:0002 add dl, ch
0000:0004 ...
Run Code Online (Sandbox Code Playgroud)
然后,您可以在地址04h处放置更精细的x86代码,在地址0bb4h处放置ARM代码.
当然,在重新定位基地址时,请确保重新定位跳转目标.
1例如,ARM 从地址0开始,而x86从地址0fffffff0h开始,因此您需要特定的硬件/固件支持来抽象引导地址.
| 归档时间: |
|
| 查看次数: |
1197 次 |
| 最近记录: |