问题标签 [angr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
26 浏览

reverse-engineering - 使用 Angr 在基本块中查找字符串

我有一个二进制文件。现在,我想从指定的基本块中提取字符串。例如:

现在我想从二进制文件中提取“Hello World %d\n”。我为此目的使用 Angr,但我做不到。用Angr如何完成上述任务?

0 投票
0 回答
44 浏览

python - 如何限制 angr 程序中的搜索

假设我有一个尝试破解标志的程序,例如 python 中使用 angr 的程序:

我的代码目前没有返回任何内容,但我知道该字符串的长度为 16,并且我知道秘密字符串的前 6 个字符是什么。我怎样才能将这个秘密字符串的搜索限制为以我知道的 6 个字符开头的内容?

0 投票
0 回答
37 浏览

docker - 找不到应该在我正在运行的 docker 容器中的文件

我正在使用逆向工程工具 angr 做一些工作,我正在尝试在容器中运行它。我当前的目录如下所示:

然后我运行一个特定的 angr 图像,如下所示:

我认为使用$pwd:/local应该可以让我访问容器内之前显示的文件(遵循 [this][1] 指南 [5:40])。

我运行容器,并尝试编写一些 python:

在哪里找不到文件。也一样local/impossible_password.bin"。启动容器时,如何使当前目录的文件可用?[1]:https ://www.youtube.com/watch?v=9dQFM5O4KFk

0 投票
0 回答
63 浏览

angr - Angr can't solve the googlectf beginner problem

I am a student studying angr, first time.

I'm watching the code in this url.

https://github.com/Dvd848/CTFs/blob/master/2020_GoogleCTF/Beginner.md

https://github.com/google/google-ctf/tree/master/2020/quals/reversing-beginner/attachments

Which is the answer of googlectf beginner.

But, the above code does not work. It doesn't give me the answer.

I want to know why the code is not working.

When I execute this code, the output was empty.

I run the code with python3 in Ubuntu 20.04 in wsl2

Thank you.

0 投票
0 回答
57 浏览

python - 如何对 angr 中的堆副作用应用约束

我正在尝试使用 angr 通过为给定结果导出正确的输入来验证函数的行为。该函数修改了一个缓冲区,在这种情况下,它只是将输入复制到其中,因此我在堆上设置了符号变量,并对其应用了等式约束。然后我为函数的输入创建一个符号变量。我打算发生的事情是 angr 本质上运行该函数,直到找到输入,这样当它被复制到缓冲区时,它满足放置在其上的约束。但是,当它运行时,我只得到一个死分支,其中输出具有正确的值,但输入没有。我在下面附上了求解器和测试程序源。这是我的实施失败吗?还是这种解决问题的方法无效

求解器

测试程序

当我运行求解器时,我得到如下输出,尽管第一个值(输入值)看似随机变化。有没有办法应用这个约束,以便程序的副作用优先?我不明白这两个值有何不同。这是我准备记忆的方式错误吗?

0 投票
0 回答
6 浏览

angr - angr_ctf 共享库示例

我正在尝试通过此处的 angr_ctf 示例来学习 angr:https ://github.com/jakespringer/angr_ctf 。这是一个很棒的资源!但我一直试图理解 14_angr_shared_library 解决方案的一部分。我希望这里有人可以启发我。

该示例展示了在共享库的函数中使用 angr,展示了 call_start() 状态预设。这是解决方案脚本的一部分,来自https://github.com/jakespringer/angr_ctf/blob/master/solutions/14_angr_shared_library/solve14.py

然后创建一个 BVS 并将其加载到 buffer_pointer 地址中:

让我困惑的部分是初始 BVV 创建步骤中的 0x3000000 值。比如,这个价值从何而来?我在网上找到了其他使用 0x4000000 的解决方案,这也有效。如果我查看进程内存映射,我看不到可以包含这些地址的范围。我原以为这需要一个有效的可写地址,例如主二进制文件的数据段地址。为什么这些无效(我认为)地址有效?!?

0 投票
1 回答
37 浏览

c - 当长度 >= 60 时 angr strcmp 无法工作

为什么长度>=60时angr不能解决问题?我只是得到一个死机。当我只检查 g[66] 时,答案是正确的。但是当使用长度超过 59 的 strcmp 时,我无法获得分叉状态。

解决.py

目标.c

输出

- - - - - 更新 - - - - -

我发现我可以添加“LAZY solve”选项,我将获得分叉状态。但它说它是Unsat ...?