我正在尝试将CMU的二元炸弹作为一个独立项目来学习一些x86组装和逆向工程.(这不是与班级相关的自动评分版本.)
我从http://csapp.cs.cmu.edu/public/labs.html下载了bomb.tar .
来自CMU的实验室描述:
"二元炸弹"是作为目标代码文件提供给学生的程序.运行时,它会提示用户键入6个不同的字符串.如果其中任何一个不正确,炸弹"爆炸",打印错误消息并在评分服务器上记录事件.学生必须通过拆卸和反向设计程序来"消除"他们自己独特的炸弹,以确定6个弦应该是什么.该实验室教学生理解汇编语言,并强迫他们学习如何使用调试器.这也很有趣.CMU本科生中的传奇实验室.
这是一个Linux/IA32二进制炸弹,你可以自己试试.通知评分服务器的功能已被禁用,因此请随意爆炸此炸弹而不受惩罚.
将其保存到适当的文件夹后,我在终端中运行了此命令:
tar xvf bomb.tar
Run Code Online (Sandbox Code Playgroud)
它确实提取了一个名为bomb(没有文件扩展名)的文件,但我认为它也会给我bomb.c,这也有助于参考.
我不能让"炸弹"跑.这是我尝试过的:
bomb
bomb: command not found
./bomb
bash: ./bomb: No such file or directory
Run Code Online (Sandbox Code Playgroud)虽然我意识到解决它需要在gdb中单步执行它,但我甚至无法在BASH中运行它并将自己弄错了答案!一点点帮助太棒了.
我使用的是相当大的,性能密集型方案的NodeJS来生成CJK字体提示的数据(sfdhanautohint),以及一些更好的依赖性跟踪我不得不结束了从一个makefile调用程序的NodeJS数万次这样。
这立即让我担心这样做实际上会在启动和预热 JIT 引擎时产生大量开销,因此我决定ngen.exe为 nodejs寻找类似的东西。看起来 V8已经对代码缓存有了一些支持,但是我可以做些什么来在 NodeJS 中使用它?
kProduceCodeCache在 NodeJS 的 GitHub 存储库中搜索不会返回任何非捆绑的 v8 结果。也许是时候提出功能请求了……