【译】Ringbahn的两个内存Bug】的更多相关文章

原文链接:https://without.boats/blog/two-memory-bugs-from-ringbahn/ 原文标题:Two Memory Bugs From Ringbahn 公众号:Rust 碎碎念 翻译: Praying 在实现ringbahn[1]的时候,我引入了至少两个 bugs,这些 bugs 引发了内存安全错误,导致段错误,分配器中止以及匪夷所思的未定义行为.我已经修复了我所能找到的 bugs,现在我也无法证明代码库中是否有更多的内存安全问题(当然,这并不意味着没…
如果两段内存重叠,用memcpy函数可能会导致行为未定义. 而memmove函数能够避免这种问题,下面是一种实现方式: #include <iostream> using namespace std; void* memmove(void* str1,const void* str2,size_t n) { char* pStr1= (char*) str1; const char* pStr2=(const char*)str2; if (pStr1< pStr2 ) { ;i!=n;…
所谓“两次内存断点法寻找OEP”,按照<加密与解密*第三版>上的解释来说,就是这样的.一般的外壳会依次对.text..rdata..data..rsrc区块进行解压(解密)处理,所以,可以先在.rdata..data等区块下内存访问断点,中断后,此时代码已解压,接着再对代码段(.text)下内存访问断点,即可到达OEP.…
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 技术学习来源:火哥(QQ:471194425) 内存在0环的两种内存隐藏方式(基于VAD树) 一.通过 _MMVAD.StartingVpn与_MMVAD.EndingVpn等值来隐藏内存. 这种方法找到需要隐藏的VAD结点,使 _MMVAD.StartingVpn=_MMVAD.EndingVpn,这样就能达到隐藏的效果 在 >>VAD树的属性及其遍历 <…
  0x00 前言 对于加壳程序第一件事就是要找到OEP(oringinal Entry point),由于加壳的缘故,当PE文件载入OD或者其他调试软件时进入的的往往是壳程序的入口地址.所以要进行逆向分析第一步就必须找到PE程序的原始入口点.   0x01 壳的加载过程 壳和病毒在某些方面比较类似,都需要比原程序更早获得控制权.壳修改了原程序的的执行文件的组织结构,从而比原程序更早获得控制权,并且并不会影响原程序的正常运行.了解的壳的加载过程对于脱壳加壳异常重要.壳的加载过程如下: 1)保存入…
这一周线上碰到一个诡异的BUG. 线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功. 通过日志发现,从凌晨5:26分开始到5:56任务执行了三次,三次都因为SQL查询超时而执行失败,而诡异的是,任务到凌晨6:00多就执行成功了. 每天都是凌晨五点多失败,凌晨六点执行成功. 点开异常日志一看是这样的: 总结来说就是MySQL查询超时. 像这种稳定复现的BUG,我原以为只需三分钟能定位,没有想到却耗费了我半天的时间. 排查之路 Explain 看到…
虽然 Erlang 的广告说得非常好,functional.share-nothing.消息传递,blah blah 的,好像用 Erlang 写并发程序就高枕无忧了,但是由于 Erlang 信奉高度实用主义的哲学,所以 Erlang 中有各种各样的后门,使得 Erlang 是一个不那么 pure 的 functional 语言,而且也是允许 share something 的. 比如说,ETS 就是一个大后门.ETS 本是为实现 Mnesia 数据库而实现的一个“基于哈希表的无结构化 term…
项目中没用spring 的restTemplate 而是采用 jersey来做rest 的实现,一直用着,也没发现有什么不对,后来加入了,以quartz用硬编码方式实现,结果启动项目的时候报错 ,具体信息为job id重复.后来经排查是因为:jersey依赖于org.springframework.web.context.ContextLoaderListener初始化 的ApplicationContext,而spring mvc 依赖于org.springframework.web.serv…
先写一个简单App页面,其实就是简单修改了react-router的官方例子中的animations例子,修改了两个地方: 1.路由方式由browserHistory修改为hashHistory 2.在Page1组件中打印console.log('render page1'); 直接上代码: 然后现在点击Page1链接,会发现render page1 被打印了两次,说明,Page1组件被渲染了两次,假如Page1组件比较复杂的话,岂不是很影响性能: 为了仔细研究为什么会render两次,下面把P…
注: 本文译自https://www.sqlskills.com/blogs/paul/missing-index-dmvs-bug-that-could-cost-your-sanity/ 原文作者是在SQL Server 2008 SP1下面说的这个文本,本人在SQL Server 2014 SP2下测试仍有有这个问,因此记录了下来 本人原本打算利用missing index的DMV中的信息做创建索引使用,之前就一直怀疑SSMS中提示的索引是否有效, 通过这篇文章,让我们重新认识missin…