181203 逆向-基于Frida的VM_log工具

本文介绍了如何使用Frida工具在CTF的虚拟机题目中,通过插桩技术获取VM执行过程中的数据变化,以辅助解密算法的分析。作者以鹏城杯为例,展示了一个简单的VM_log工具的实现,该工具能在Linux环境下,基于Python 2运行。通过指定程序名称、Hook地址、数据地址和长度等参数,可以生成执行日志。在面对反调试代码时,文章也提供了一种解决方法,并分享了利用日志反推出输入数据的思路。
摘要由CSDN通过智能技术生成

做CTF中的VM题一直都是在python中手写一遍所有的handler来模拟执行VM,然后打log并结合代码来猜测逻辑
然后慢慢地产生一个想法、本身程序也有在执行这个VM,何苦还要再手写VM呢,反正大多数情况下需要的只是log–再具体说的话就只是程序的reg和data而已
通过在VM的每次loop之间插桩拿到data,也同样可以打出log
由于CTF中的VM大多数情况下都不会很复杂,因此完全可以通过观察input数据和data的变化来猜测算法

于是以前两天的鹏城杯为例,写出了这个工具(的雏形)
由于缺乏项目经验,所以完善度比较差_(:з」∠)_还请大佬见谅

简单来说给定地址和长度,即可将数据send回py的callback函数,然后通过py进行格式化输出,可选参数都在代码开头部分,linux下基于py2

  • program_name
    程序名称
  • hook_addr
    要Hook的地址,一般位于VM_loop的开头
  • data_addr
    要dump的数据地址
  • data_length
    数据的长度
  • data_fromat
    打印数据的进制,仅接受16和10
  • test_input
    猜测的输入
  • input_length
    输入长度,当test_input小于该长度时会以comp_char补足
  • anti_debug
    程序若有反调试代码,则需要根据实际情况进行反调试。由于Frida是通过ptrace来实现的,因此对于ptrace(TRACE_ME)会没有办法。最简单的办法当然是Patch,如果不便需要Hook的话,本程序提供了LD_PRELOAD的方法来绕过一些函数。将下述代码编
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值