flare-emu的分析功能被进一步拓展-黑客接单平台

访客5年前黑客资讯713
IDAPython 库 flare-emu团队新开发的一个库,这个库是依赖于 IDA Pro 和 Unicorn 模仿结构,并为让逆向工程师可以经过脚本对代码的功用进行模仿,Unicorn 支撑 x86, x86_64, ARM 以及 ARM64 架构。 flare-emu为用户的脚本模仿供给了一个易于运用并且灵敏的接口,旨在为不同的系统架构设置灵敏且强健的模仿器的一切根底作业,这样你就可以专心于处理代码剖析的问题。 5个不同的接口 它现在供给了5个不同的接口来处理你的代码模仿需求,并且它还有一系列相关的协助和东西函数。 1.emulateRange 这个API可以在用户指定的上下文中模仿一系列指令或函数,关于用户界说的钩子,它既可用于单个指令,也可以用于在调用 call 指令的时分,用户可以决议模仿器是单步越过仍是单步履行(进入函数调用)。此接口为用户供给了一种为指定寄存器和栈参数指定值的简洁办法。假如指定了字节串,则将其写入模仿器的内存,并将指针写入寄存器或栈变量。模仿后,用户可以运用flare-emu的有用效用函数从模仿内存或寄存器中读取数据,或运用回来的Unicorn模仿方针进行直接勘探。 此外, flare-emu 还供给了一个关于 emulateRange 的一个小的封装,名为 emulateSelection,可以用来模仿当时在 IDA Pro 中杰出显现的部分指令。假如 flare-emu 没有供给你需求的一些功用,你可以直接运用回来的 Unicorn 模仿器方针。 2. iterate 这个API是用来强制模仿函数中的特定分支,以抵达预期的运转途径。用户可以指定一个方针地址列表,或许指定一个函数的地址,从该函数中运用对该函数的穿插引证列表作为方针,以及一个用于抵达方针时的回调。程序会履行到给定的方针地址上,尽管当时的条件可能会跳转到其他的分支上。 与emulateRange API相似,也供给了用户界说的钩子选项,用于独自的指令和何时遇到“调用”指令。iterate API的一个比如是完成与咱们的argtracker东西相似的功用。 3.emulateBytes 这个API供给了一种简略模仿一个外部 shellcode 的办法,供给的字节不会添加到IDB,仅仅直接的模仿履行,这关于预备模仿环境十分有用。例如,flare-emu自身运用此API来操作ARM64 CPU的模型特定寄存器(MSR),该模块不是由Unicorn揭露的,以便启用向量浮点(VFP)指令和寄存器拜访。与emulateRange相同,假如 flare-emu 没有供给你需求的一些功用,你可以直接运用回来的 Unicorn 模仿器方针。 4.iterateAllPaths 这个API十分相似于iterate,只供给方针函数,不供给方针地址,它将测验查找一切途径并进行模仿。这在履行代码剖析时十分有用,由于代码剖析需求拜访函数的每个基本块。 5.emulateFrom 这个API在函数鸿沟未明确界说的情况下十分有用,由于混杂处理过的二进制文件或shellcode一般便是这样界说的。只需你供给了一个开始地址,它将进行模仿,直到没有任何东西可以模仿,或许你在其中一个钩子中中止进行模仿。这可以经过将strict参数设置为False来调用,并启用动态代码进行勘探,flare-emu将让IDA Pro在模仿过程中履行指令。 装置 要装置flare-emu,只需将flare_emu.py和flare_emu_hooks.py放入IDA Pro的python目录,然后将其作为IDApython脚本中的模块导入,flare-emu依赖于Unicorn及其Python绑定。 注意事项 flare-emu是运用新的IDA Pro 7x API编写的,它不与曾经版别的IDA Pro版别不兼容。 详细用法 尽管flare-emu可用于处理许多不同的代码剖析问题,但其更常见的用处之一是协助研究人员解密歹意软件二进制文件中的字符串。 在此,咱们简略提一下FLOSS,FLOSS是一个很好的东西,一般可以经过测验辨认字符串解密函数并运用模仿来解密在每次穿插引证时传入的字符串来主动履行此操作。可是,FLOSS并不总是可以辨认这些函数并运用其通用办法正确模仿它们。有时你需求做更多的作业。此刻,便是flare-emu大显神通的机会了。只需你运用随手了,flare-emu就可认为你节约许多时刻。下面,就让咱们来看看歹意软件剖析人员在处理加密字符串时遇到的一些常见场景。 简略的字符串解密场景 假如你现已确认了解密x86_64二进制文件中的一切字符串的函数这个函数就会处处被调用,并解密许多不同的字符串。在IDA Pro中,你可以此函数命名为decryptString。下面便是你的flare-emu脚本,用于解密一切这些字符串,并在每次函数调用时运用解密的字符串作为注释,一起记载每个解密的字符串及其解密的地址。 from __future__ import print_function import idc import idaapi import idautils import flare_emu def decrypt(argv): myEH = flare_emu.EmuHelper() myEH.emulateRange(idc.get_name_ea_simple("decryptString"), registers = {"arg1":argv[0], "arg2":argv[1], "arg3":argv[2], "arg4":argv[3]}) return myEH.getEmuString(argv[0]) def iterateCallback(eh, address, argv, userData): s = decrypt(argv) print("%016X: %s" % (address, s)) idc.set_cmt(address, s, 0) if __name__ == '__main__': eh = flare_emu.EmuHelper() eh.iterate(idc.get_name_ea_simple("decryptString"), iterateCallback) 在__main__中,咱们首先从flare-emu创立一个EmuHelper类的实例,这是咱们运用flare-emu做一切工作的类。接下来,咱们运用iterate API,为它供给decryptString函数的地址和回调函数的称号,EmuHelper将为模仿的每个穿插引证调用回调函数。[1][2][3]黑客接单网

相关文章

代码共享:运用Python和Tesseract来辨认图形验证码

 各位在企业中做Web缝隙扫描或许浸透测验的朋友,或许会常常遇到需求对图形验证码进行程序辨认的需求。许多时分验证码分明很简略(关于非互联网企业,或许企业界网中的运用来说特别如此),但由于没有趁手的辨认...

PDO 避免SQL注入的原理

 当说到防止SQL注入的办法时,脑海中总是会想到运用PDO绑定参数的办法或许运用mysql_real_eascape_string()来处理(尽管陈旧的 mysql_XXX 这类的函数现已不主张运用)...

几个不错且免费的Web安全解决方案

朋友:有什么的免费的网站安全解决方案,或者说产品么? 黑客接单渠道:当然有啊!不光免费,还很好用呢! 朋友:那还不赶忙和我说说?我小网站买不起WAF,免费的好用的话我就用下啊! 黑客接单渠道:那等下,...

黑客接单:ddos网络攻击的威力

今年6月,美国的一次网络攻击破坏了伊斯兰革命卫队使用的一个关键数据库。   根据美国高级官员的说法,6月份针对伊朗的秘密网络攻击摧毁了伊朗准军事部门使用的一个关键数据库,该数据库和伊朗策划...

浏览器进犯结构BeEF Part 4:绕过同源战略与浏览器署理

从这一章开端,正式进入了进犯阶段。BeEF供给了很多的进犯模块,能够直接运用。除了已有的模块,BeEF还供给了API,能够运用API来自行开发新的进犯模块。这一章,要介绍怎么绕过同源战略,还会介绍Be...

运用Burp的intruder功用测验有csrf维护的应用程序

许多Web运用会有避免跨站恳求假造的战略,比方经过request恳求传一个当时页面有用或许当时会话有用的参数(假如他们没有,那就很值得研讨)。这些参数用来证明这个恳求是从预订用户宣布的,而不是进犯者那...