Binary Ninja是一款强大的逆向编译软件,这款软件向程序员提供了多种修改二进制文件的方式,整个软件可以分为两种编译模式,用户可以根据自己实际需求选择对应的方式进行程序编译;Binary Ninja拥有一个现代化的工作界面,功能布局直观好用,降低用户在查找相关工具时的难度;插件的扩展也是这款软件最为突出的一个功能,最常见的Binary Ninja插件是Python,同时软件中也会适当的构建一些C ++插件,并且通常会针对每个平台构建一个指令,其中在API存储库中就包含了几个C ++示例,用户在使用时可以查看了解。
反编译器/HLIL
最重要功能是HLIL反编译器,就像之前的LLIL和MLIL一样,HLIL可以通过API,UI使用,并具有另一个主要功能:线性视图现在支持所有版本的IL,此外反编译器视图现在是默认的线性视图。
新的交叉引用窗格和工作流程
虽然我们以前的交叉引用窗格可用,但它缺少一些有用的功能,这些功能现在已在全面检查的交叉引用系统中实现。有关更多信息,请参见:帮助文档/入门指南/交叉引用窗格
合并工具
合并工具(工具/协作/合并工具(测试版))使您可以在同一二进制文件的不同分析之间实现基本合并。尽管这个简单的原型并不是我们进行协作的完整愿景,但这只是我们正在为完整的企业协作服务器测试和构建的某些技术的概念证明,并且现在可供所有用户使用。
创建类型
通过在线性视图中选择多个字节并按1、2、4、8,d,a,o,-,s来快速创建或修改类型和结构(内部工作),改进了用于创建类型。
广泛的API
我们的Python和C ++ 绑定几乎可以与平台的每个元素进行交互。UI,IL,反汇编,标头,我们的类型解析器等等。
强大的分析
代码和数据交叉引用,基于置信度的类型传播,值集分析等-都是自动完成的,并且能够以与体系结构无关的方式编写脚本。
中级语言(BNIL)
我们创建了一个功能强大但易于阅读的IL系列,涵盖了多个分析阶段。最低级别接近于汇编,更高级别接近反编译输出。对于不受支持的架构,实施提升器也非常简单。
1、可以对加载的BinaryView进行基础设置;
2、对现有BNDB的支持进行基础设置(通过使用选项打开);
3、maxLookupTableSize设置可配置最大跳转表大小;
4、用于数据流分析的简单范围的串联;
5、在数据流的字节大小负载上添加了字节范围推断;
6、添加了对恒定传播调度表分析的支持;
7、修改能力通过简单地在表位置更改类型来定义/定义跳转表;
8、功能列表,脚本控制台,日志,功能图和交叉引用现在可以停靠和分离;
9、支持UI插件;
10、在图形视图中添加了多选;
11、在图形视图中添加了键盘导航;
您可以通过多种方式加载文件:
将文件拖放到Binary Ninja窗口中
使用开始屏幕()上的File/Open菜单或Open按钮[CMD/CTRL] o
使用File/Open with Options菜单,您可以自定义分析选项([CMD/CTRL-SHIFT] o)
从“分类”选择器(File/Open for Triage)中打开一个文件,该文件启用了几个最少的分析选项,并首先显示摘要视图
单击最近文件列表中的一项([CMD/CTRL-SHIFT]单击以使用Open with Options工作流程时按住)
使用可选的命令行参数运行Binary Ninja
通过[CMD/CTRL] l热键从URL打开文件
使用binaryninja:URL处理程序打开文件。出于安全原因,URL处理程序要求您在通过URL处理程序打开文件之前确认警告。URL还支持使用expr查询参数进行深度链接,其中表达式值是有效的可解析表达式,例如导航对话框中可能的表达式,并且在parse_expressionAPI中有完整说明。下面提供了一些示例:
URL用于引用本地文件系统上的文件。
binaryninja:///bin/ls?expr=sub_2830 -打开给定的文件并导航至函数: sub_2830
binaryninja:///bin/ls?expr=.text-打开给定的文件并导航到该.text部分的开始地址
binaryninja:///bin/ls?expr=.text+6b-打开给定的文件,然后导航到6b该.text部分的十六进制偏移量。
URL要引用远程文件文件,则url应当以query参数为前缀,binaryninja:并可以选择在其后缀expr
binaryninja:file://?expr=[.data + 400]-下载远程文件并导航至地址.data加0x400
分析
打开文件后,Binary Ninja就会开始自动分析,这与反编译整个二进制文件非常相似。
即使Binary Ninja在分析二进制文件时,UI也应响应。不仅如此,而且因为分析优先考虑用户请求的分析,所以您可以立即开始浏览二进制文件,并且将查看的任何地方都优先进行分析。状态栏中显示了通过二进制文件的当前进度(更多详细信息可bv.analysis_info在Python控制台中找到),但请注意,待分析的项目总数将增加,二进制文件也将得到处理,并发现更多项目需要分析。
加载二进制文件期间的错误或警告也显示在状态栏中,并带有一个图标(在上图的情况下,显示了大量警告)。最常见的警告来自起吊不完全,可以安全地忽略。如果警告中包含类似的消息Data flow for function at 0x41414141 did not terminate,请将该二进制文件报告给错误数据库。
分析速度
如果您想加快分析速度,则有几种选择。第一种是使用File/Open for Triage激活Triage文件选择器的菜单。默认情况下,“ 分类”模式将启用一组更快的默认分析选项,这些选项不提供那么多的深入分析,但速度明显更快。
此外,使用“ 使用选项打开”功能允许按二进制自定义许多分析选项。
互动式
导航
在Binary Ninja中导航代码通常是双击所需位置的情况。可以双击地址,引用,功能,跳转边等进行导航。此外,g热键可以导航到当前视图中的特定地址。该字段的语法非常灵活。可以输入完整的表达式,包括基本算术,解引用和名称解析(函数名称,数据变量名称,段名称等)。数值默认为十六进制,但也可以控制。
切换视图
切换视图有多种方式。在某些情况下,它是自动的(从图形视图中单击数据引用将导航到线性视图,因为数据未在图形视图中显示),并且还有多种方法可以手动更改视图。导航时,可以使用视图热键切换到与当前选择相同位置的特定视图。另外,右下角的视图菜单可用于更改视图,而无需导航到任何给定位置。
命令面板
快速浏览各种选项和操作的一项重要功能是command palette。受Sublime和VS Code中类似功能的启发,命令面板是整个应用程序,上下文相关的动作系统的前端,该系统中的所有动作,插件和热键都可以通过该选项板进行路由。
要触发它,只需使用[CMD/CTRL] p热键。请注意,命令面板是上下文相关的,因此某些操作(例如Display as - Binary)可能仅根据您当前的视图或选择而可用。插件也可以使用此功能。例如,插件可以将PluginCommand.register与可选的is_valid回调一起使用,以确定何时可以使用该操作。
自定义热键
动作系统中的任何动作都可以映射有自定义热键。要访问键盘绑定菜单,请[CMD/CTRL-SHIFT] b通过Edit / Keybindings...菜单或Keybindings 命令选项板条目使用热键。
注意
在MacOS上,Ctrl指的是Command键,而Meta指的是Control键。这是Qt执行的重新映射,使跨平台的键绑定更易于定义。
小费
要在键绑定列表中搜索,只需单击以确保它已聚焦并开始输入!
默认热键
h :切换到十六进制视图
p :创建一个函数
[ESC] :向后导航
[CMD] [ (MacOS):向后导航
[CMD] ] (MacOS):向前导航
[CTRL] [ (Windows / Linux):向后导航
[CTRL] ] (Windows / Linux):向前导航
[SPACE] :在线性视图和图形视图之间切换
g :转到地址对话框
n :命名符号
u :取消定义现有符号(仅用于删除新的用户定义名称)
e :编辑一条指令(通过修改原始二进制文件-当前仅针对x86和x64启用)
x :聚焦交叉引用窗格
; :添加评论
i :在图形视图中的拆卸,LLIL,MLIL和HLIL之间循环
t :切换到文字视图
y :更改类型
a :将数据类型更改为ASCII字符串
[1248]:直接将类型更改为指定宽度的数据变量
d :在各种宽度的数据变量之间切换
r :将数据类型更改为单个ASCII字符
o :创建指针数据类型
[CMD-SHIFT] + (MacOS):图形视图放大
[CMD-SHIFT] - (MacOS):图形视图缩小
[CTRL-SHIFT] + (Windows / Linux):图形视图放大
[CTRL-SHIFT] - (Windows / Linux):图形视图缩小
图表视图
打开二进制文件时,Binary Ninja中的默认视图是一个图形视图,该图形视图将反汇编的基本块分为视觉上不同的块,边缘显示了它们之间的控制流。
图形视图的功能包括:
能够双击边缘以在位置之间快速跳转
缩放(CTRL鼠标滚轮)
垂直滚动(侧面滚动条和鼠标滚轮)
水平滚动(底部滚动条以及SHIFT鼠标轮)
分别突出显示参数,地址和立即值
边缘颜色指示路径是条件跳转的真假情况(首选项中的色盲选项对于具有红绿色盲的人很有用)
上下文菜单,可以触发某些功能范围的动作以及针对突出显示指令的某些动作(例如,反转分支逻辑或将特定功能替换为NOP)
查看选项
每个视图(十六进制,图形,线性)在UI的右下角都有各种可配置的选项。
列出默认寄存器类型
十六进制视图
十六进制视图对于查看可能是甚至不是可执行二进制文件的原始二进制文件很有用。十六进制视图是用于经由转化以各种方式数据特别好Copy as,Transform和Paste from菜单。请注意,Transform菜单选项将原位转换数据,并且这些选项仅在十六进制视图处于Raw模式而不是任何二进制视图(例如“ ELF”,“ Mach-O”或“ PE”)。
小费
在十六进制视图中所做的任何更改将在打开同一文件的任何其他视图中立即生效(可以通过。下的Split to new tab或Split to new window选项创建新视图View)。但是,这可能会导致大量的重新分析,因此请在大型二进制文件中进行较大的编辑或转换之前发出警告。
交叉引用窗格
左下角的“交叉引用”视图显示了当前选定地址或地址范围的所有交叉引用。此外,该窗格将根据是否选择整行(显示了对该地址的所有交叉引用)或是否选择了该行内的特定标记而有所不同。例如,如果单击其中的符号memmove,call memmove将显示对的所有已知交叉引用memmove,而如果单击call指令所在的行,则只会得到对调用指令地址的交叉引用。交叉引用可以是传入的或传出的,并且可以是数据或代码。明确地说:
传入数据引用-引用是指向此位置的数据变量。
传入代码引用-引用是代码中指向此位置的指针。
传出数据引用-当前选择的项目是指向该引用的数据变量指针,该引用本身可以是数据或代码。
外发代码引用-当前选择的项目是指向引用的代码,该引用本身可以是数据或代码。
基于树的布局
交叉引用窗格具有两种不同的布局:基于树(默认设置,如上所示)和基于表(可以通过上下文菜单或命令选项板进行切换)。基于树的布局提供了最简洁的视图,使用户可以快速查看(例如)总体上和按功能列出的当前选择数量。它还允许折叠以快速隐藏无趣的结果。
基于表格的布局
基于表的布局提供了基于字段的排序和多选。单击Filter文本将展开过滤器窗格,其中显示了用于过滤当前结果的选项。
交叉引用过滤
两个下拉框中的第一个允许选择传入,传出或传入和传出(默认)。第二个允许选择代码,数据或代码和数据(默认)。文本框允许对结果进行正则表达式匹配。选择过滤器后,Filter显示从Filter ()变为Filter (/)
交叉引用固定
默认情况下,Binary Ninja的交叉引用窗格是动态的,允许快速导航到相关引用。有时您可能希望保留当前引用,以便将它们用作一种工作列表。通过三种不同的方式支持此工作流程。首先也是最明显的是单击Pin复选框(仅在Filter下拉列表处于打开状态时才可见)。这样即使更改了当前选择,也可以防止交叉引用列表的更新。或者,SHIFT+X(或Focus Pinned Cross References在上下文菜单或命令选项板中选择)弹出一个Pinned Cross References窗格。该窗格有一个静态地址范围,只能通过该Pinned Cross References操作进行更新。第三种方法是选择(或在表视图中多选)一组交叉引用,然后右键单击Tag Selected Rows。然后可以使用标签窗格导航这些引用。标签允许将持久列表保存到分析数据库,而其他选项仅在当前会话中持续。
交叉引用热键
x -聚焦交叉引用窗格
[SHIFT] x 集中固定的交叉引用窗格
[OPTION/ALT] x -导航到下一个交叉引用
[OPTION/ALT-SHIFT] x -导航到上一个交叉引用
仅当交叉引用窗格突出显示时,以下内容才可用:
[CMD/CTRL] f -打开过滤器对话框
[ESC] -清除搜索对话框
[CMD/CTRL] a -选择所有交叉引用
[ARROW UP/DOWN] -选择(但不导航)下一个/上一个交叉引用
[ENTER] -导航到所选参考
线性视图
线性视图是基于图的反汇编窗口和原始十六进制视图之间的混合视图。它以线性方式列出整个二进制文件的内存,在尝试查找二进制文件中未被正确识别为代码的部分甚至只是检查数据时,它特别有用。
线性视图最常用于识别和添加未知数据的类型信息。为此,在滚动时,您会看到散布的数据和代码。与图形视图非常相似,您可以通过命令面板Show Address或Options右下方的菜单打开和关闭地址。也有许多其他选项。
功能清单
Binary Ninja中的功能列表显示了当前识别的功能列表。随着大型二进制文件的分析,列表可能会在分析过程中增长。功能列表以已知功能(例如入口点,导出或使用二进制文件格式的其他功能)开头,然后从中进行探索以识别其他功能。
功能列表还突出显示导入,并使用不同颜色的符号标识的功能使它们易于识别。
小费
要在功能列表中搜索,只需单击以确保它已聚焦并开始输入!
脚本(Python)控制台
集成的脚本控制台对于不应该作为完整插件编写的小型脚本很有用。
要触发控制台,请使用-或使用View/ Script console菜单。
加载后,脚本控制台可以停靠在不同位置,或弹出到独立窗口中。请注意,此时,窗口位置不会在重新启动时保存。
只需执行您通常在python中所做的操作,就可以进行多行输入。如果:在行尾留下尾随,该框将自动变成多行编辑框,并附有命令历史记录。要提交多行输入,请使用-
默认情况下,交互式python提示符内置了许多便捷的辅助函数和变量:
here/ current_address:当前选择的地址
bv/ current_view/:当前BinaryView
current_function:当前功能
current_basic_block:当前的BasicBlock
current_llil:当前的LowLevelILFunction
current_mlil:当前的MediumLevelILFunction
current_selection:当前选择的开始和结束地址的元组
write_at_cursor(data):将数据写入当前所选内容开头的函数
get_selected_data():返回当前选择中的数据的函数
注意
当前的脚本控制台目前仅支持Python,但对于希望实现自己的绑定的高级用户而言,它对于其他编程语言是完全可扩展的。
使用插件
可以通过以下两种方法之一安装插件。首先,可以通过将插件(.py文件或使用文件实现python模块的__init__.py文件夹)添加到适当的路径来手动安装它们:
苹果系统: ~/Library/Application Support/Binary Ninja/plugins/
Linux: ~/.binaryninja/plugins/
视窗: %APPDATA%\Binary Ninja\plugins
另外,可以使用新的pluginmanager API 安装插件。
有关插件的更多详细信息,请参阅插件指南。
PDB插件
Binary Ninja支持通过内置的PDB加载器加载PDB文件。从插件菜单中选择后,它将尝试使用以下搜索顺序查找对应的PDB文件:
在与打开的文件/ bndb相同的目录中查找(例如,如果拥有c:\foo.exe或c:\foo.bndb打开PDB插件,则查找c:\foo.pdb)
在本地符号库中查找。这是设置指定的目录:local-store-relative或local-store-absolute。该目录的格式为foo.pdb\\foo.pdb。
尝试从设置中指定的符号服务器列表连接和下载PDB symbol-server-list。
提示用户输入PDB。
设定值
可以通过[CMD/CTRL] ,热键进行设置,并且可以进行多种自定义。
所有设置都保存在文件的用户目录中settings.json。该文件中的每个顶级对象都代表一个不同的插件或逻辑组。
启用该identifiers复选框将显示用于在json文件中设置设置的原始标识符,这可能对以编程方式与设置进行交互很有用。
Cygwin
808 KB/2020-08-17Cygwin(UNIX模拟环境)是许多自由软件的集合,最初由CygnusSolutions开发,用于各种版本的MicrosoftWindows上,运行UNIX类系统。Cygwi
Vbs To Exe
1.45 MB/2020-08-17VbsToExe绿色中文版是一款vb转exe的工具。VbsToExe简单易用,而且VbsToEXE转换器自带中文,界面简洁操作简单,需要这款转换工具的朋友可以下载使用。
Visual Studio 2015 Community
5.8 GB/2020-08-17微软终于发布了VisualStudio2015简体中文版,下载吧第一时间提供VisualStudio2015官方中免费文版下载。VS2015提供了跨平台开发的功能,支持从Windows到Linux、甚至iOS和Android的开发!
Cygwin x64
832 KB/2020-08-17Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnussolutions公司开发的自由软件(该公司开发的著名工具还有eCos,不过现已被Redhat收购
sql数据库备份恢复助手
1.77 MB/2020-08-17sql数据库备份恢复助手是一款能够帮助sql数据库备份与恢复的工具,软件完美支持自动/手工方式备份本地/局域网(远程)数据库,无限复合式备份任务,支持备份文件通过Lan/Ftp/云
Navicat for MySQL
17.34 MB/2020-08-17NavicatforMySQL是一个强大的MySQL数据库管理和开发工具。Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习。使用了极好的图形用户界面(GUI)...
jEdit
3.72 MB/2020-08-17jEdit官方中文版是一个用Java语言开发的文本编辑器,在GPL下发布。它可以在Windows、Linux、MacOS等多种平台下运行,并且有很多插件,可以扩充基本功能。它也支
Aptana Studio
127.97 MB/2020-08-17AptanaStudio官方版是一个集成式的Web应用程序开发环境,它不仅可以作为独立的程序运行,而且还可以作为eclipse插件使用。AptanaStudio可以支持多种AJA
UltraEdit
phpMyAdmin
WinHex
EmEditor Professional(文本的编辑工具)
JSCompress
Java反编译器
Resource Hacker
AutoHotkey(自动安装脚本编写工具)
Oracle SQL Handler
老式水果机游戏
琼星海南麻将官方下载安装2024
彩虹多多专享版
彩虹多多极速版
狂暴捕鱼官网504.1
王者棋牌cc老版本
琼崖海南麻将15旧版下载
明星三缺一手机单机版
一木棋牌官方旧版本客户端
您可能感兴趣的专题
男生必备
男生们看过来!
安卓装机必备
女生必备
女生必备app是拥有众多女性用户的手机软件,作为一个女生,生活中像淘宝、京东这类线上购物软件可以说是少不了的,小红书这种穿搭、化妆分享平台也很受欢迎,类似于西柚大姨妈、美柚这种专为女生打造的生理期app更是手机必备,还有大家用的最多拍照美颜app是绝对不能忘记的,除此之外对于一些追星女孩来说,微博也是一个必不可少的软件。超多女生必备软件尽在下载吧!
迅雷看看使用教程
迅雷看看播放器是一款多功能在线高清多媒体视频播放器,支持本地播放与在线视频点播,采用P2P点对点传输技术,可以在线流畅观看高清晰电影。不仅如此,迅雷看看不断完善用户交互和在线产品体验,让您的工作与生活充满乐趣。
驱动精灵
驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能,也是大家日常生活中经常用到的实用型软件之一了。
拼音输入法
对于电脑文字输入,拼音输入法是一种非常受欢迎的输入法,搜狗拼音输入法、百度拼音输入法、QQ拼音输入法、谷歌拼音输入法、紫光拼音输入法、智能拼音输入法等,你在用哪款呢?一款好用适合自己的拼音输入法一定对您平时帮助很大!下载吧收集了最热门国人最喜欢用的拼音输入法给大家。
b站哔哩哔哩怎么使用
很多人都喜欢在b站哔哩哔哩上观看视频,不单是因为可以提前看到一些视频资源,B站的一些弹幕、评论的玩法也是被网友们玩坏了!下面下载吧小编带来了b站哔哩哔哩怎么使用的教程合集!希望能帮到你啦!
抖音短视频app
抖音短视频app,这里汇聚全球潮流音乐,搭配舞蹈、表演等内容形式,还有超多原创特效、滤镜、场景切换帮你一秒变大片,为你打造刷爆朋友圈的魔性短视频。脑洞有多大,舞台就有多大!好玩的人都在这儿!