- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
老实说,我对此感到非常困惑,因为我的炸弹第三阶段看起来不像我的任何同学或我的教授给我的例子。任何帮助将不胜感激。我有一份最近使用的终端的副本,我将我已经尝试了 5 个小时的大部分时间,我已经足够了解 %d %d 是所请求的布局,并且它要求 2 个数字,我相信其中一个是负数。由于这里的比较语句和jg
0x08048fbb <+39>: cmp $0x1,%eax
0x08048fbe <+42>: jg 0x8048fc5 <phase_3+49>
此外,它还要求对相同值进行另一次比较,我认为这是这里的第一个比较
0x08048fc5 <+49>: cmpl $0x7,-0xc(%ebp)
0x08048fc9 <+53>: ja 0x8049032 <phase_3+158>
让我失望的是所有的加法和减法,而且一般来说,所有的加法和减法都挤在底部。
如果我只是将我看到的数字相加,我在哪里可以找到在endor中实际与这些语句一起使用的值。此时我什至不知道它是否在盯着我的脸。全部对比如下
0x08048fbb <+39>: cmp $0x1,%eax
0x08048fbe <+42>:jg 0x8048fc5
0x08048fc5 <+49>: cmpl $0x7,-0xc(%ebp)
0x08048fc9 <+53>: ja 0x8049032 <phase_3+158>
0x0804903c <+168>: cmpl $0x5,-0xc(%ebp)
0x08049040 <+172>: jg 0x8049047 <phase_3+179>
但目前一切都很困惑,我需要用新的眼光来看待这个问题。如果有任何帮助,我们将不胜感激。
That's number 2. Keep going!
0 1
Breakpoint 1, 0x08048f9a in phase_3 ()
(gdb) disas
Dump of assembler code for function phase_3:
0x08048f94 <+0>: push %ebp
0x08048f95 <+1>: mov %esp,%ebp
0x08048f97 <+3>: sub $0x28,%esp
=> 0x08048f9a <+6>: lea -0x10(%ebp),%eax
0x08048f9d <+9>: mov %eax,0xc(%esp)
0x08048fa1 <+13>: lea -0xc(%ebp),%eax
0x08048fa4 <+16>: mov %eax,0x8(%esp)
0x08048fa8 <+20>: movl $0x804a58c,0x4(%esp)
0x08048fb0 <+28>: mov 0x8(%ebp),%eax
0x08048fb3 <+31>: mov %eax,(%esp)
0x08048fb6 <+34>: call 0x8048894 <__isoc99_sscanf@plt>
0x08048fbb <+39>: cmp $0x1,%eax
0x08048fbe <+42>: jg 0x8048fc5 <phase_3+49>
0x08048fc0 <+44>: call 0x8049321 <explode_bomb>
0x08048fc5 <+49>: cmpl $0x7,-0xc(%ebp)
0x08048fc9 <+53>: ja 0x8049032 <phase_3+158>
0x08048fcb <+55>: mov -0xc(%ebp),%eax
0x08048fce <+58>: xchg %ax,%ax
0x08048fd0 <+60>: jmp *0x804a4c0(,%eax,4)
0x08048fd7 <+67>: mov $0x0,%eax
0x08048fdc <+72>: lea 0x0(%esi,%eiz,1),%esi
0x08048fe0 <+76>: jmp 0x804902d <phase_3+153>
0x08048fe2 <+78>: mov $0x0,%eax
0x08048fe7 <+83>: jmp 0x804902a <phase_3+150>
0x08048fe9 <+85>: mov $0x0,%eax
0x08048fee <+90>: xchg %ax,%ax
0x08048ff0 <+92>: jmp 0x8049027 <phase_3+147>
0x08048ff2 <+94>: mov $0x0,%eax
0x08048ff7 <+99>: jmp 0x8049024 <phase_3+144>
0x08048ff9 <+101>: mov $0x0,%eax
0x08048ffe <+106>: xchg %ax,%ax
0x08049000 <+108>: jmp 0x8049021 <phase_3+141>
0x08049002 <+110>: mov $0x0,%eax
0x08049007 <+115>: jmp 0x804901c <phase_3+136>
0x08049009 <+117>: mov $0x30d,%eax
0x0804900e <+122>: xchg %ax,%ax
0x08049010 <+124>: jmp 0x8049017 <phase_3+131>
0x08049012 <+126>: mov $0x0,%eax
0x08049017 <+131>: sub $0x264,%eax
0x0804901c <+136>: add $0x3b8,%eax
0x08049021 <+141>: sub $0x49,%eax
0x08049024 <+144>: add $0x49,%eax
0x08049027 <+147>: sub $0x49,%eax
0x0804902a <+150>: add $0x49,%eax
0x0804902d <+153>: sub $0x49,%eax
0x08049030 <+156>: jmp 0x804903c <phase_3+168>
0x08049032 <+158>: call 0x8049321 <explode_bomb>
0x08049037 <+163>: mov $0x0,%eax
0x0804903c <+168>: cmpl $0x5,-0xc(%ebp)
0x08049040 <+172>: jg 0x8049047 <phase_3+179>
0x08049042 <+174>: cmp -0x10(%ebp),%eax
0x08049045 <+177>: je 0x804904c <phase_3+184>
0x08049047 <+179>: call 0x8049321 <explode_bomb>
0x0804904c <+184>: leave
0x0804904d <+185>: lea 0x0(%esi),%esi
0x08049050 <+188>: ret
End of assembler dump.
(gdb)
最佳答案
您提到的第一个比较( +39
处的比较)正在比较 %eax
它保存 sscanf
的返回值。因此,它只是测试可以转换多少参数。此代码需要 2
,因此该代码正在执行 if (sscanf() > 1) goto ok; explode_bomb();
+49
处的比较正在检查第一个数字,它是 if ((unsigned)x > 7) explode_bomb();
我希望这是显而易见的。
下一步,地址:+60
,这段代码中有一条最重要的指令:jmp *0x804a4c0(,%eax,4)
。这是通过跳转表进行跳转。它将带您到不同的位置,具体取决于 %eax
中的值。 ,此时它保存着您的第一个输入。我们知道输入在0
之间和7
所以该表中有 8 个条目。您应该能够使用 x/8a 0x804a4c0
检查它们。可以合理猜测,它们是以下代码块中的各个地址,并且流程在 +163
处重新加入。 。编译器通常使用此模式来实现 switch
声明。
线路+168
进一步将第一个数字限制在 0
之间和5
,和线 +174
将第二个数字与 %eax
的当前值进行比较并在不匹配时引爆炸弹。这告诉我们有效输入形成 6 对。我们可以选择任意第一个数字,按照跳转表查看 %eax
中将放置什么值。并将其输入为第二个数字。
关于assembly - 二元炸弹第三阶段卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28914722/
这是贪吃蛇游戏的部分代码。我想做的是制作关卡(大约3个),如果分数达到一定的分数(100或200),关卡就会改变。 在这段代码中,我尝试让分数达到 100 时进入第 2 阶段。但正如我编码的那样,它只
我是移相器新手。我开始看 youtube 系列,我首先有问题。我的背景图片无法加载。我有这个js代码 /* global Phaser */ var game = new Phaser.Game(12
我有一个包含 2 个阶段的应用程序,我不希望用户关闭第二个阶段,只需将其图标化即可。 目前我正在使用 oncloseRequest 处理程序来最小化窗口 - secondaryStage.setOnC
现在,我有一台运行服务器的基本LAMP配置。生产服务器是slicehost。但是我想知道将代码/数据库实例推送到阶段dev> stage> production的最佳方法是什么。它与您创建阶段的方式有
我在舞台上有一个场景。场景的宽度为 337.0 像素。但是,当我将它添加到舞台时,舞台的大小为 337.6 像素,由于 0.6 像素的差异,在屏幕的右边缘留下了一个白色间隙。 我尝试使用 stage.
我有这个未修饰的窗口: public static void initStartPage(final Stage primaryStage) { final Stage startPa
有什么方法可以在 Maven 构建中执行特定阶段。例如,如果我只想运行那些在预集成阶段执行的插件,Maven 是否提供了一种方法来做到这一点? e.g. mvn pre-integration-pha
仅在构建特定分支时如何运行构建步骤/阶段? 例如,仅当分支名为 deployment 时才运行部署步骤,其他所有内容保持不变。 最佳答案 在声明性管道语法中执行相同的操作,下面是一些示例: stage
我有一个简单的查询,试图在Hive 0.14中运行: select sum(tb.field1), sum(tb.field2), tb.month from dbwork.mytable tb gr
在 Mercurial 中,我经常使用 secret 变更集来跟踪我对尚未准备好推送的内容的工作。然后,如果我需要对某些文件进行紧急更改,我可以更新到公共(public)修订版,进行更改并推送它,而不
我一直在为 Heroku 的新附加组件工作,目前它是 alpha 阶段。因此,目前,我无法在我创建的应用程序上添加该附加组件,因为没有按钮可供我添加它。有人可以向我指出一些可以帮助我解决问题的资源吗?
我有 2 个线程正在运行,一个正在监听 soket 等待命令,另一个启动 javafx 应用程序 public class GraphicInterface extends Application i
在我的 Java Fx 应用程序中,我创建了两个阶段。第一阶段是主 Controller 类 HomeController 中的默认阶段。第二个 AddNewEmailController 是通过调用
我正在编写一个简单的 JavaFX 应用程序,它具有三个阶段:登录、注册 (Anmeldung) 和欢迎 (Anwendung)。 抱歉采用德语命名! 我已经在 App 类中创建了每个舞台及其场景,在
问题是我正在使用 jQuery("form")[0].reset(); 在需要时重置表单。此方法正在将形式重置到初始阶段。这里初始阶段的意思是“表单第一次加载到页面时带有一些值的阶段”。 但我需要的是
我有一个带有 pre-integration-test 和 post-integration-test 阶段的 Maven POM,如下所示。 start-server pre-in
我遇到一个错误,我已经为网络制作了一个 UIPageController,但我似乎无法找到它的问题,只有一个错误,请帮忙。代码如下 - 更多代码点播。 @interface ContentViewCo
考虑在其中放置一些文本的大型 (2000x1000) 舞台。舞台缩小到 1000x500,使文本不可读。然后我们尝试通过放大来放大文本。 预期:文本应该在某个时候再次变得可读。 实际:无论我们放大多少
试图在网页中居中 KineticJS 阶段。 尝试过: 但它集中在舞台的左侧,而不是舞台的中间。我错过了什么? 最佳答案 margin:auto 可以对齐这个div中心 关于htm
我正在 jboss 中部署一个简单的 Web 应用程序,其中包含一个 servlet、一个 jsp 文件和一个 easy EJB。这是 servlet 的代码: package webejb; imp
我是一名优秀的程序员,十分优秀!