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

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

相关文章

探寻如何绕过WAF的XSS检测机制-黑客接单平台

一、前语 本文提出了一种清晰界说的办法,即通过勘探假定出检测歹意字符串的规矩并编写Payload,来绕过跨站脚本进犯(XSS)的安全防备机制。咱们提出的办法共包含三个阶段:确认Payload结构、勘探...

换个视点看看,为什么垂钓进犯总能成功

当我榜首次收到银行发来的“安全”邮件时,我榜首反响便是这儿是否有诈?由于在我看来,它实在是太像垂钓邮件了。这封躺在收件箱里的邮件来历于我银行司理的个人邮箱地址,而非Chase银行的官方邮箱。邮件中不...

恣意用户暗码重置(四):重置凭据未校验

在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...

MySQL怎么避免SQL注入

 假如您经过网页获取用户输入的 数据 并将其刺进一个MySQL数据库,那么就有可能发生SQL注入安全的 问题 。 本章节将为咱们介绍怎么避免SQL注入,并经过脚原本过滤SQL中注入的字符。  所谓SQ...

根据时延的盲道研讨:受限环境下的内容回传信道

在一次缝隙赏金活动中,挖到个指令注入的洞,我先以时延作为证明向厂商提交该缝隙,厂商以国内网络环境差为由(确实得翻墙)拒收,几回交流,奉告若我能取回指定文件 secret.txt 才认可。方针是个受限环...

高手对决 -- 博客服务器被黑的故事

  每一个高手在生长路上, 都需要与墙作足够的对立. 要么你成功, 站在国际之颠, 然后纵情罗致到尖端的常识; 或许或被它打趴下, 成为芸芸众生中的一人, 然后对它习以为常. 我也不破例. 前不久,...