逆向工程工具Binary Ninja Python API的简单使用方法

个人觉得Binary Ninja很优秀的二进制分析工具,这里简单来总结一下其Python API的使用方法(Ubuntu系统):

首先Binary Ninja在Ubuntu上基本上是绿色软件,不需要安装,在这里有介绍:https://docs.binary.ninja/getting-started.html

在其安装目录下找到Script目录,在终端中运行:

python3 install_api.py

(因为我同时在用Python3和Python2.7),运行之后,就可以在Python工程里直接调用其相应API了。不过这里吐槽一下其官网文档,不是应该给大家详细介绍这些么,一上来介绍了很多wrtie plugin的东西,虽然也很重要,可哪有调用其API方便呢。

下面的代码展示了如何Print一个可执行文件中的所有文件名,很简单粗暴有木有:

from binaryninja import *
import time

bv = BinaryViewType.get_view_of_file('util.o')
bv.update_analysis()
time.sleep(5)
for func in bv.functions:
    print(func.symbol.name)

其他更复杂的Python API功能可以参考其API Document:https://api.binary.ninja/

就简单总结这么多。

(这篇博客整理的时候也参考了一些文章,例如这篇:http://arm.ninja/2016/03/08/intro-to-binary-ninja-api/

如果需要在 MyBatis 逆向查询中使用 `binary` 进行大小写区分,可以在 SQL 语句中使用 `binary` 函数将列名或参数转换成二进制格式,从而实现大小写区分。 比如,假设有一个表 `user`,其中有一个列 `username`,需要进行大小写区分的查询。可以使用以下 SQL 语句进行查询: ```sql SELECT * FROM user WHERE BINARY username = BINARY #{username} ``` 这里使用了两个 `BINARY` 函数将 `username` 和参数都转换成二进制格式,从而实现了大小写区分。 在 MyBatis Generator 中,可以通过在 `columnOverride` 标签中添加 `javaType` 属性指定该列对应的 Java 类型,并在该 Java 类型中添加一个方法,将字符串转换成二进制格式。例如: ```xml <table tableName="user"> <columnOverride column="username" javaType="String"> <property name="typeHandler" value="com.example.BinaryStringTypeHandler"/> </columnOverride> </table> ``` 这里通过设置 `typeHandler` 属性指定了一个自定义的类型处理器 `BinaryStringTypeHandler`,该类型处理器的代码如下: ```java public class BinaryStringTypeHandler extends BaseTypeHandler<String> { @Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, "BINARY " + parameter); } @Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException { return rs.getString(columnName); } @Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return rs.getString(columnIndex); } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return cs.getString(columnIndex); } } ``` 这里重写了 `setNonNullParameter` 方法,在设置参数时将字符串添加上 `BINARY` 前缀,从而实现了大小写区分。需要注意的是,该方法中的 `ps.setString(i, "BINARY " + parameter)` 语句可能要根据具体数据库的语法进行修改。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值