当前位置: 首页 > 科技观察

Karta:一个强大的IDA源代码助手插件

时间:2023-03-14 11:54:56 科技观察

关于KartaKarta是一个强大的IDAPython插件,可以在给定的代码中识别和匹配开源代码库。该插件使用一种独特的技术,使其能够支持大型二进制文件(>200,000个函数),同时几乎不影响整体性能。Karta使用的匹配算法是位置驱动的,这意味着它的主要重点是定位不同的编译文件,并根据文件中的原始顺序匹配每个文件的功能。这种匹配方式依赖于开源函数的数量K,而不是二进制文件的大小N,因此可以获得显着的性能提升。使用场景我们认为IDA插件Karta主要有三大使用场景:搜索目标文档,确定使用的开源代码库列表(包括版本信息);匹配支持的开源库和其中的符号,以帮助对恶意软件进行逆向工程分析;匹配支持的开源库及其符号,帮助在专用代码中搜索特定代码,实现对二进制文件/固件的逆向工程分析;项目目录结构src:插件源代码目录configs:预设*JSON配置文件compilations:生成配置文件的编译提示,以及以往开源代码文档的经验教训:Sphinx文档目录KartaRecognizerKarta的识别器是一个较小的插件,用于识别现有的(支持开源库的累积版本。因此,我们无需一遍又一遍地对同一个开源库进行逆向工程,只需运行Kartarecognizer插件即可获取已使用开源库的详细列表。Karta目前支持超过10个开源库,包括:OpenSSLLibpngLibjpegNetSNMPzlib其他Karta匹配器在识别目标代码使用的开源代码库后,可以为特定库(如libpng1.2.29版本)编译.JSON配置文件。编译后,Karta会自动尝试匹配加载的开源代码库中的函数或符号二进制。此外,如果你的开源项目使用了外部函数(memcpy、fread或zlib_inflate),Karta也会尝试匹配这些外部函数。工具安装(Python3&IDA>=7.4)安装最新版本的Karta,我们需要在本地环境配置Python3,然后使用如下命令将项目源码clone到本地:gitclonehttps://github.com/CheckPointSW/Karta.git接下来,运行以下命令来运行Karta安装脚本:setup.pyinstall(Python2&IDA<7.4)在IDA7.4发布时,Karta仅针对IDA7.4或更新版本开发和Python3。Python2和更早的IDA版本仍然支持Kartav1.2.0,这很可能是Python2.X生命周期结束后最后一个支持的版本。项目地址Karta:[GitHubPortal]