angr学习笔记(11)(SimProcedure)
发布日期:2021-05-07 12:09:03 浏览次数:17 分类:原创文章

本文共 1660 字,大约阅读时间需要 5 分钟。

angr系列

文章目录

伪代码分析

在这里插入图片描述
在这里插入图片描述
这里利用函数名字来进行hook操作:

 check_symbol='check_equals_ORSDDWXHZURJRBDH'

然后把相应的hook替换函数进行申明:

 p.hook_symbol(check_symbol,mySimPro())

实现替换函数:

 class mySimPro(angr.SimProcedure):        def run(self,user_input,user_input_length):            angr_bvs=self.state.memory.load(                user_input,                user_input_length                )            desired='ORSDDWXHZURJRBDH'            return claripy.If(                desired==angr_bvs,                claripy.BVV(1,32),                claripy.BVV(0,32)                )

脚本

import angrimport sysimport claripydef main(argv):    bin_path=argv[1]    p=angr.Project(bin_path)    init_state=p.factory.entry_state()    class mySimPro(angr.SimProcedure):        def run(self,user_input,user_input_length):            angr_bvs=self.state.memory.load(                user_input,                user_input_length                )            desired='ORSDDWXHZURJRBDH'            return claripy.If(                desired==angr_bvs,                claripy.BVV(1,32),                claripy.BVV(0,32)                )    check_symbol='check_equals_ORSDDWXHZURJRBDH'    p.hook_symbol(check_symbol,mySimPro())    sm=p.factory.simgr(init_state)    def is_good(state):        return b'Good Job.' in state.posix.dumps(1)    def is_bad(state):        return b'Try again.' in state.posix.dumps(1)    sm.explore(find=is_good,avoid=is_bad)    if sm.found:        found_state=sm.found[0]        password=found_state.posix.dumps(0)        print("Solution:{}".format(password.decode("utf-8")))    else:        raise Exception("Solution not found")if __name__=='__main__':    main(sys.argv)

在这里插入图片描述

MSWKNJNAVTTOZMRY

验证

在这里插入图片描述

上一篇:angr学习笔记(13)(static_binary)
下一篇:angr学习笔记(10)(hook)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月05日 17时46分16秒