
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
验证
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月05日 17时46分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Oracle 学习一篇文章就够了(珍藏版)
2019-03-04
一篇文章带你搞定 Oracle 的体系结构
2019-03-04
Oracle 单行函数
2019-03-04
(Java 剑指 offer)剪绳子
2019-03-04
一篇文章带你搞定 OAuth 2.0 的四种方式
2019-03-04
一篇文章带你搞定官方推荐 Stack 的替代品 双端队列 Deque
2019-03-04
(LeetCode)Java 求解搜索旋转排序数组
2019-03-04
(模拟数组)Java 求解螺旋矩阵 II
2019-03-04
Burpsuite-02-设置JVM内存大小与解决页面显示文字乱码错误
2019-03-04
Python学习:字符串
2019-03-04
Python学习:继承
2019-03-04
Python学习:类、类对象和实例对象
2019-03-04
数据库系统概论:ER图设计
2019-03-04
DIJ - 昂贵的聘礼 - POJ 1062
2019-03-04
计算几何(旁切圆) - Ex-circles - UVA 11731
2019-03-04
DP - Tickets - HDU - 1260
2019-03-04