java使用capstone库将栈顶程序计数器旁的操作码反汇编为指令

本文详细介绍了在Java中使用Capstone库进行操作码反汇编的步骤,包括添加依赖、解决Native库加载错误和API版本不匹配问题。作者遇到的问题是中央仓库的Capstone版本过旧,而最新版本的DLL与库绑定不完全,导致无法正常使用。
摘要由CSDN通过智能技术生成

目录

问题描述:

解决思路:

编写Java代码:

1.pom.xml文件中添加依赖

2.编写测试代码

4.解决错误UnsatisfiedLinkError: Unable to load library 'capstone': Native library (win32-x86-64/capstone.dll) not found in resource path

5.解决错误 Different API version between core & binding (CS_ERR_VERSION)

6.运行结果

7.完整的可正确跑的代码

补充:

1.java如何debug具体的jna加载路径

2.使用最新版本的capstone代码去进行反汇编(官方binding未完全支持绑定)

注明:


问题描述:

        这篇博客用来更新上一篇文章 https://blog.csdn.net/qq_37549757/article/details/103778394 留下的待更新内容,即使用java语言编写程序去调用capstone完成操作码的反汇编

解决思路:

        既然是使用java去调用capstone,那么必然需要有一个capstone提供的java包来作为第三方库供我们使用,首先想到的是去中央仓库(http://www.mvnrepository.com)搜搜看有没有这个包  

        果然是有这个包的,不然官方文档(http://www.capstone-engine.org/documentation.html )也不会说可以用java去操作的,有了包之后就很好说了,官方文档上面有这么段代码,直接复制粘贴就完事了

编写Java代码:
 

1.pom.xml文件中添加依赖

<dependency>
    <groupId>com.github.transcurity</groupId>
    <artifactId>capstone</artifactId>
    <version>3.0.5-rc2</version>
</dependency>
 

2.编写测试代码

package com.holidaylee;

import capstone.Capstone;

/**
 * @author : HolidayLee
 * @description : Capstone反汇编测试程序
 */
public class CapstoneTest {
    private static long addr = 0x00007f6034099625L;
    private static byte[] hexCodes = {
            0x4c, (byte) 0xd6, (byte) 0xf8, 0x48, (byte) 0xf7, (byte) 0xda, (byte) 0xeb, 0x39, 0x48, (byte) 0x8b, 0x74, (byte) 0xd0, 0x08, 0x48, (byte) 0x89, 0x74,
            (byte) 0xd1, 0x08, 0x48, (byte) 0x83, (byte) 0xc2, 0x01, 0x75, (byte) 0xf0, (byte) 0xc3, 0x66, (byte) 0x90, 0x48, (byte) 0x8b, 0x74, (byt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值