代码编织梦想

1625-5 王子昂 总结《2018年1月30日》 【连续第487天总结】
A. 蓝鲸whale-angr学习
B.

Angr是一个多架构的动态符号执行的框架

符号执行就是将输入抽象成一个符号(而不是具体值),分析这个符号的变化,来对应程序的路径

早期符号执行是静态的,依靠分析程序代码来进行工作
后来发展出了动态的符号执行,模拟执行该程序来工作

Angr载入二进制文件后,会将其转换为中间语言(字节码),然后进行一定程度的静态分析,以及对程序状态空间的探索,最后将上述情况混合得出结果

eg:

 v3 = "Dufhbmf";
  v4 = "pG`imos";
  v5 = "ewUglpt";
  for ( i = 0; i <= 11; ++i )
  {
    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
      return 1LL;
  }
  return 0LL;
}

一个简单的对输入进行check的程序
虽然代码很容易读懂,但是理解起来还是要稍微分一点功夫的
再加上dump字符串、写脚本处理等等 5-10min还是需要的

但是用如下的几行代码,在短短几十秒钟内就可以得到结果

In [17]: proj = angr.Project("./r100")

In [18]: state = proj.factory.entry_state()

In [19]: simgr = proj.factory.simgr(state)

In [20]: simgr.explore(find=0x400844, avoid=0x400855)
WARNING | 2018-02-03 03:08:36,391 | angr.procedures.definitions | unsupported syscall: sys_101
Out[20]: <SimulationManager with 2 active, 1 found, 12 avoid>

In [21]: simgr.found[0].posix.dumps(0)
Out[21]: 'Code_Talkers\

明天再多练习一些进阶的情况
angr的局限性在于如果路径过多、限制条件过于复杂,由于原理是遍历路径、约束求解符号,因此会消耗大量的时间和内存

C. 明日计划
angr

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/whklhhhh/article/details/79245754

180131 逆向-angr入门(2)_奈沙夜影的博客-爱代码爱编程

1625-5 王子昂 总结《2018年1月31日》 【连续第488天总结】 A. 蓝鲸whale-angr学习 B. 今天尝试了通过参数来传递输入的形式 之前没有控制参数,实际上是可以通过 import clari

angr源码分析——claripy ,factory_functiony的博客-爱代码爱编程

claripy是一个符号求解引擎,大多数时候,我们只是简单使用claripy,然而当我们做一些核心的符号执行分析时,则不得不深入claripy api,了解其实现细节及处理逻辑,从而进行改进。就我目前对符号执行的理解而言,在使用符号执行解决问题时,首先要提供符号变量,然后提供求解路径,提供求解器,最终求解出结果。那么在angr中如何定义以及初始化这些参数和

angr及库函数识别学习启动篇_胖胖鹏鹏胖胖鹏的博客-爱代码爱编程

本博客由闲散白帽子胖胖鹏鹏胖胖鹏潜力所写,仅仅作为个人技术交流分享,不得用做商业用途。转载请注明出处,未经许可禁止将本博客内所有内容转载、商用。       最近好像摸鱼摸得有点嚣张了(做了半个月比赛还拿到了参与奖,嘻嘻),毕设从开题到现在就没怎么做过,在这样下去就要被导师打了,自己还夸下了6月底前有初步结果的海口,摸鱼是摸不成了,进入高速学习模式吧。 一

一道另类的二进制逆向解法(angr初识)_羊羊羊128的博客-爱代码爱编程

新人发帖,欢迎大佬们指点 angr工具(Python运行):     工具下载:https://www.anquanke.com/post/id/85039 下边来解一道逆向的题试用一下 题目下载地址:http://www.whaledu.com/course/13/task/51/show 例题(无参数)r100: Linux环境下,Python交互键入

angr-claripy源码分析(一)_gabriel_null的博客-爱代码爱编程

claripy是一个符号求解引擎,而此次学习重点关注值集分析领域。要想改进利用这部分功能,还是需要深入分析代码,了解其实现细节及处理逻辑。 (一)首先对claripy的各个包做了简单的分析 Ast包 抽象语法树包创建base基类,一个关于参数的操作树。不能直接初始化,二十使用一个构造函数构造叶节点,然后建立更复杂的表达式。 AST对象有hash识别方法,

angr尝试-爱代码爱编程

中文简介添加链接描述 但是官方github上的pdf文档介绍的更详细。 测试了一下中文简介的内容大概就这些,只是测试加上个人理解,不一定正确不喜勿喷 #coding=utf-8 import angr b=angr.P

逆向angr学习-爱代码爱编程

坑是迟早要填的.... 前言 angr 是一个基于符号执行和模拟执行的二进制框架,可以用在很多的场景,比如逆向分析,漏洞挖掘等。 符号执行简单来说就是用符号来模拟程序执行,在我看来就相当于暴力破解,比如一个程序要求你进行一个复杂的运算,每次动态调试只能输入一次,然而符号执行可以尽可能的遍历每一条路径,这样就方便了许多。 先贴个链接在这里:官方文档

Angr安装与使用之安装篇-爱代码爱编程

Angr安装 将angr安装在虚拟环境virtualenvwrapper中 1 安装环境 #本人使用的是python3 pip3 install virtualenvwrapper #如果使用的是python2,需要使用以下命令安装 pip install virtualenvwrapper # 可以使用whereis命令查看脚本的位置 wher

Angr安装与使用之使用篇(一)-爱代码爱编程

针对angr提供的练习题,现在进行求解00_angr_find,它是关于输入密码的问题,需要使用angr求解出正确密码。 参考博客点这里 #1 创建项目 project = angr.Project(“00_angr_find”) #2 通过entry_state()创建一个默认初始状态,这个状态是为了告诉angr该从哪里开始 initi

angr 本地环境(python3安装)+ 例题-爱代码爱编程

安装 看网上都是python2安装 写一下python3安装的教程 下载angr压缩包 https://github.com/angr/angr 解压后打开文件夹在当前目录输入 python setup.py install 等待执行完成 执行完成后发现有错误信息 不慌先去测试一下缺少什么东西 输入命令 python im

Angr安装与使用之使用篇(六)-爱代码爱编程

针对angr提供的练习题,现在进行求解05_angr_symbolic_memory,需要使用angr求解出正确密码。但是需要提供排除地址以减少路径求解时间。 具体代码如下所示 import angr import claripy import sys def main(argv): path_to_binary = argv[1] proje

angr用法解析和常见用法实战-爱代码爱编程

angr用法解析和常见用法实战 文章目录 angr用法解析和常见用法实战安装常见报错libgomp.so.1: version GOMP_4.0 not found, or other z3 issuesNo such file or directory: 'pyvex_c'AttributeError: 'FFI' object has no

ctf 逆向工具angr的学习笔记_逆向angr-爱代码爱编程

angr 概述 如何学习 题目列表 00_angr_find 01_angr_avoid 02_angr_find_condition 03_angr

angr 从入门到放弃(一)_angr python-爱代码爱编程

libfuzzer那个系列先放一放吧,学了学感觉也没有比AFL好用很多,所以重复性较高的东西先不着急学了吧,这里开个新坑,为了做同学出的一道auto pwn,来学学angr 基础知识 首先了解一下什么是符号执行: 传统