目录
5.解决错误 Different API version between core & binding (CS_ERR_VERSION)
2.使用最新版本的capstone代码去进行反汇编(官方binding未完全支持绑定)
问题描述:
这篇博客用来更新上一篇文章 https://blog.youkuaiyun.com/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, (byte) 0xd0, (byte) 0xe8,
0x48, (byte) 0x89, 0x74, (byte) 0xd1, (byte) 0xe8, 0x48, (byte) 0x8b, 0x74, (byte) 0xd0, (byte) 0xf0, 0x48, (byte) 0x89, 0x74, (byte) 0xd1, (byte) 0xf0, 0x48,
(byte) 0x8b, 0x74, (byte) 0xd0, (byte) 0xf8, 0x48, (byte) 0x89, 0x7

本文详细介绍了在Java中使用Capstone库进行操作码反汇编的步骤,包括添加依赖、解决Native库加载错误和API版本不匹配问题。作者遇到的问题是中央仓库的Capstone版本过旧,而最新版本的DLL与库绑定不完全,导致无法正常使用。
最低0.47元/天 解锁文章
840

被折叠的 条评论
为什么被折叠?



