DynamoRIO
DynamoRIO是一个动态测试工具平台,同时也被称之为二进制插桩平台,它支持程序在执行时任何部分代码的转换,DynamoRIO导出用于构建动态工具的接口,以实现各种用途:程序分析和理解,检测,优化,转变等。DynamoRIO不限于插入标注(callouts)和弹簧床机制(trampolines,一个“弹簧床”就是一个函数存根,它能在被调用的时候,触发编译器执行,将这个函数编译成机器码,“弹簧床”的指针就会被替换为真实函数的指针。)通过IA-32/AMD64/ARM/AArch64指令操作库任意修改应用程序指令。DynamoRIO可以针对在常见操作系统(windows,linux,android)以及在IA-32、AMD64、AArch64硬件产品上运行未经修改的应用程序提供高效、透明和全面的操作。
Android NDK
Android NDK,即是Native Development Kit,在此之前,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。原生SDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。不过,Google也表示,使用原生SDK编程相比Dalvik虚拟机也有一些劣势,比如程序更加复杂,兼容性难以保障,无法访问Framework API,Debug难度更大等。开发者需要自行斟酌使用。
众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。