我试图为给定的易受攻击的代码执行缓冲区溢出攻击.但它似乎是错误的,因为虽然我的漏洞利用字符串不会破坏堆栈,但我无法使我的汇编代码(嵌入在漏洞利用字符串中)起作用.
这是执行我要攻击的程序的'ret'指令之前的一段内存值.
0x55683984: 0x5568398c 0x...(old r.a) 0x68e322a1 0x0000c31c
0x55683994: 0xf7fa9400 0x0804a3d7 0x556839c0 0xf7e518d0
Run Code Online (Sandbox Code Playgroud)
在这一点上,事情出错了,因为它无法弹出堆栈并使%eip指向弹出值?所以我的漏洞汇编代码不起作用.(0x68e322a1 0x0000c31c)Gdb说没有函数包含所选帧的程序计数器.当我尝试在没有调试的情况下执行它时,它会导致分段错误.
这个问题与我的装配长度有关吗?(在这种情况下是6)?
Program received signal SIGSEGV, Segmentation fault.
0x5568398c in ?? ()
(gdb) x 0x5568398c
0x5568398c: 0x68e322a1
Run Code Online (Sandbox Code Playgroud)
当我能够看到导致段错误的地址内部时,怎么会发生这种情况?
我正在为有向图实现这个算法.但是这个图节点的有趣之处还有它们自己的流量.我认为,必须以特殊方式处理原始问题的这种微妙变化.因为,在原始的最大流量问题中可以从头到尾找到任何路径(实际上,在Edmonds-Karp算法中,我们需要做BFS,并选择到达最终节点的第一条路径)但是有了这个节点 - 容量扩展,我们需要更加小心"这个路径选择"的工作.我知道这是因为我实现了原始算法,发现自己的流量值比max-flow要小,我怀疑它与此节点容量限制有关.
我在这方面付出了很多努力,并提出了一些想法,比如将初始图形转换为一个图形,通过添加自循环(在每个节点上添加自循环并为每个节点找到包含此自循环的路径)对节点没有容量限制路径上的节点)或添加虚拟节点和边缘,其权重取代初始节点容量约束)但是,我不相信任何这些都是解决此问题的好方法.
任何想法将不胜感激.
提前致谢.
我正在实现一个用于文本分类的流学习器.我的实现中有一些单值参数需要在新流项到达时进行更新.例如,我想在新的预测发生时改变学习率.但是,我怀疑在初始广播之后有一种方法可以广播变量.那么如果我每次更新它时都需要广播变量会发生什么.如果有一种方法可以做到这一点或者解决我想要在Spark Streaming中完成的工作,我会很高兴听到它.
提前致谢.
我正在尝试实现美式桶排序。维基百科说:“首先计算每个垃圾箱中掉落的物体数量,然后将每个物体放入其桶中。”
第二阶段,将对象放入适当的桶中时,是否需要使用辅助数组?有没有办法通过在线性时间内交换数组元素来做到这一点?
在一个有向图中(假设它有很多循环),我需要计算每个节点的特定节点可以达到的节点数。我怎样才能用最小的努力做到这一点?我需要使用哪种算法?
注意:我认为针对此问题的合理算法应递归计算此数字(例如,如果将a连接到b,则“节点a”的结果取决于“节点b”的结果)。
algorithm ×3
graph ×2
apache-spark ×1
assembly ×1
bucket-sort ×1
edmonds-karp ×1
radix-sort ×1