这里需要注意的一点是, 如果你把鼠标放到一个条件分支上,这个时候菜单里面可能没有 Convert to NOP这个选项,因为和 as Never功能是一样的,软件显示一个就够了。
单行编辑
在Patch这个菜单中,还有一些隐藏的菜单项,比如单行编辑功能。使用单行编辑功能,你可以快速的以汇编形式修改单行指令。选择一条需要修改的指令,按快捷键e或者使用右键菜单Patch/Edit current line选项,然后就可以看到选中那条汇编指令就变成了可编辑状态,编辑完成之后按回车即可,Binary Ninja会自动把修改结果应用到二进制文件中去。
如果编辑汇编的时候,新指令比原先的指令长度小的话,工具会自动填充余下的空间为NOP指令,比如在 x86 x64这些变长指令系统上。
SCC是一个自定义的从零开始构建的C编译器,目前支持 MacOS, Windows, Linux 和 FreeBSD这些系统,CPU架构支持 x86,x86_x64, PPC32, MIPS32, ARM(不包含Thumb)以及quark(一种自定义的CPU架构)。SCC在编译的时候会保留函数的原型, 然后会对编译的结果进行基础块打乱和函数内寄存器随机打乱来模糊函数原型,同时也会加入一些anti反汇编的字节(注:不确定这么理解对不对,这里给出原文:SCC can generate code with signature and analysis evasions built in. It will randomize placement of basic blocks and randomize its register allocator to evade naive signatures. It will also add anti-disassembly sequences.)