hex烧录android源码,Android平台下使用Capstone反汇编引擎(HEX转ARM64)

[Java] 纯文本查看 复制代码package dt.capstone_arm64;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import capstone.Capstone;

/**

* 示例: 使用capstone反汇编引擎反编译64位汇编代码;

*

*

* 程序输出:

* CAPSTONE-X86-64: =========== X86-64 反汇编引擎使用 =========开始==

* CAPSTONE-X86-64: 4096 push rbp

* CAPSTONE-X86-64: 4097 mov rax, qword ptr [rip + 0x13b8]

* CAPSTONE-X86-64: =========== X86-64 反汇编引擎使用 =========结束==

* CAPSTONE-ARM-64: =========== ARM-64 反汇编引擎使用 =========开始==

* CAPSTONE-ARM-64: 4096 ldr x1, [x20]

* CAPSTONE-ARM-64: 4100 mov x0, x19

* CAPSTONE-ARM-64: 4104 bl #0xccc

* CAPSTONE-ARM-64: 4108 movz w0, #0xa

* CAPSTONE-ARM-64: =========== ARM-64 反汇编引擎使用 =========结束==

*/

public class MainActivity extends AppCompatActivity {

/***********************************************************************************************

[ARM-64 汇编代码]

.text:0000000000001164 81 02 40 F9 LDR X1, [X20]

.text:0000000000001168 E0 03 13 AA MOV X0, X19

.text:000000000000116C 31 FF FF 97 BL sub_E30

.text:0000000000001170 40 01 80 52 MOV W0, #0xA

**********************************************************************************************/

private byte[] ARM64_CODE = {(byte) 0x81, 0x02, 0x40, (byte) 0xF9, (byte) 0xe0, 0x03, 0x13, (byte) 0xAA,

0x31, (byte) 0xFF, (byte) 0xFF, (byte) 0x97, 0x40, 0x01, (byte) 0x80, 0x52};

private byte[] X86_CODE = {0x55, 0x48, (byte) 0x8b, 0x05, (byte) 0xb8, 0x13, 0x00, 0x00};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/* [X86-64 反汇编引擎使用] */

Capstone cs_x86 = new Capstone(Capstone.CS_ARCH_X86, Capstone.CS_MODE_64);

Capstone.CsInsn[] allInsn = cs_x86.disasm(X86_CODE, 0x1000);

Log.e("CAPSTONE-X86-64", "=========== X86-64 反汇编引擎使用 =========开始==");

for (int i = 0; i < allInsn.length; i++) {

Log.e("CAPSTONE-X86-64", allInsn.address + " " + allInsn.mnemonic + " " + allInsn.opStr);

}

Log.e("CAPSTONE-X86-64", "=========== X86-64 反汇编引擎使用 =========结束==");

/* [ARM-64 反汇编引擎使用] */

Capstone cs_arm64 = new Capstone(Capstone.CS_ARCH_ARM64, Capstone.CS_MODE_ARM);

Capstone.CsInsn[] allInsn_arm64 = cs_arm64.disasm(ARM64_CODE, 0x1000);

Log.e("CAPSTONE-ARM-64", "=========== ARM-64 反汇编引擎使用 =========开始==");

for (int i = 0; i < allInsn_arm64.length; i++) {

Log.e("CAPSTONE-ARM-64", allInsn_arm64.address + " " + allInsn_arm64.mnemonic + " " + allInsn_arm64.opStr);

}

Log.e("CAPSTONE-ARM-64", "=========== ARM-64 反汇编引擎使用 =========结束==");

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值