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

访客5年前黑客资讯715
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]黑客接单网

相关文章

Firefox与Edge的dom策略导致的csp bypass问题-黑客接单平台

在2019年对csp研讨过一阵,发现能够经过其他的dom向存在CSP的dom注入javascript协议,来到达绕过CSP的安全防护。 众所周知,CSP(内容安全战略)有两种方法来设置,一种是经过浏览...

Web安全之点击绑架(ClickJacking)

 点击绑架(ClickJacking)是一种视觉上的诈骗手法。大概有两种方法,一是攻击者运用一个通明的iframe,掩盖在一个网页上,然后诱运用户在该页面上进行操作,此刻用户将在不知情的情况下点击通明...

谈谈Json格式下的CSRF攻击-黑客接单平台

一、CSRF缝隙简介 csrf缝隙的成因便是网站的cookie在浏览器中不会过期,只需不封闭浏览器或许退出登录,那今后只需是拜访这个网站,都会默许你现已登录的状况。而在这个期间,进犯者发送了结构好的c...

如何用虚拟钱银匿名注册域名

以比特币为首的P2P虚拟钱银推翻了人们对钱银的认知,也为网上生意供给了新的途径。近几年来,虚拟钱银付出以其去中心化、匿名性等特色深受欢迎,活泼在各个领域,涵盖了电商、慈悲安排、企业院校等合法组织,当然...

对DOTNET(.NET)中的歹意长途拜访进程进行剖析(下)

上一篇说到代码会有许多重复,由于它在每个if句子(共有五个if句子,会在下篇讲到)中都会调用一个函数。但是,细节却略有不同,其间给定的办法称号和函数的参数都会显现函数的内容。 第一个if句子在程序会集...

一个登陆框引起的血案

客户给的测验规模,或许挖众测时,许多时分都只要一个简略的登陆框,想起最初的苦逼的我,只能去测测爆炸弱口令,并且仍是指定用户名爆炸暗码这种,当真是苦不堪言; 文章内容很简略,可是仍是想共享一波,送给向我...