Windbg包含一个额外的扩展 MSEC.dll, 可以通过加载该DLL来判断一个Crash是否有可利用性, 尤其是对于空指针的Crash. 使用也很简单, 首先下载后将其放在 Debugging Tools for Windows (x86)\winext文件下. 使用Windbg加载Crash 169 然后加载MSEC.dll 170 判断是否可利用 171 ** PROBABLY_NOT_EXPLOITABLE ** 说明基本上不能利用 参考: https://tedazhar.wordpress.com/2011/12/27/windbg-exploitable-extensio

Read More

从firmadyne学习路由器的仿真流程 了解路由器的仿真主要是了解路由器是怎么运行的,固件是什么?需要什么其他的支持等。 网络,NVRAM

Read More

基本思路 打开该程序之后,输错会出现异常的字符串,依据这些字符串追踪到sub_402120函数,大致理一下该题的思路,该函数是一个接收消息的回调函数,当接受到消息时,将进入该函数。 151 包含四个参数,核心的是当wParam=1035时Crack成功,所以需要找到发送消息并且wParam=1035的位置,使得该语句能够被执行。 152 步骤 一开始以为是SendMessageW函数进行消息的发送,但是查了所有对该函数的引用的位置,并没有发送wParam=1035的消息,发现最开始sub_402120函数会新开辟一个线程,执行的是StartAddress函数,因此一步一步跟进去查看发现在su

Read More

做字符串匹配,leetcode 28题,实现strstr函数,在一个字符串中去找是否存在另一个字符串。暴力解,直接扫O(n^2),C++中该函数也是这么实现的。 因为在扫的过程中会存在一些已经扫过的重新扫,记录一下相关信息减少复杂度到O(n),就是KMP算法。 参考 http://www.cppblog.com/suiaiguo/archive/2009/07/16/90237.html

Read More

C++的优先队列使用 优先队列特点 优先队列维护在队列头部维持一个最值,使用堆结构进行维护 因此插入的时间复杂度为log(n),n为此时树中的元素个数,取出最值的时间复杂度为O(1) 默认为维持最大值,大根堆 159 比较函数 维持最小值 160 原型 161 Type: 基本元素的数据类型类型 Container:保存数据的容器,必须是数组实现的容器,比如vector,deque,默认用的是vector Functional:比较方法 参考 http://www.cnblogs.com/flyoung2008/articles/2136485.html

Read More

windbg 调试来看XpSp3 heap 基本概念 堆 一个进程能有多个堆,+0x58指向堆中的第一个堆段,C++一般用HeapCreate创建,每个堆至少有一个堆段 堆段 一个堆最多有64个堆段,+0x20(FirstEntry)指向堆段中的第一个堆块,C++一般用HeapAlloc创建 堆块 实际的堆内存使用 关于堆的实际分配使用 堆管理器通过Windows虚拟内存管理器分配一大块内存(堆段),这块内存将被分为大小不同的堆块来满足实际的分配。 当一个堆段耗尽所有空间后,堆管理器将创建另一个新的堆段。 堆管理流程 堆管理包括前端堆管理和核心堆层管理两个部分,前端堆管理 主要用于快速的堆

Read More

提供几种rop gadgets搜索的方法, 主要来源于网上的blog, 主要是总结一下 Immunity Debugger Mona 因为以前一直使用的是OD, 没有使用Immunity Debugger, 因此没有实际尝试, 推荐一篇Blog. https://huirong.github.io/2015/12/18/mona/ 搜索DLL中的ROP链 165 MSFrop metasploit的一个小工具 这个在Kali上就有, 可以对DLL进行搜索, 使用也很方便, 可以参考: https://www.offensive-security.com/metasploit-unleash

Read More

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×