|
|
|
|
|
|
|
WinDbg
帖子发起人: merry 发起时间: 2009-10-21 10:58 上午 回复: 1
|
帖子排序:
|
|
|
|
2009-10-21, 10:58 上午
|
merry
注册: 2008-09-26
发 贴: 61
|
如何调试Javascript语言的内存(堆)分配?
|
|
|
|
如下一段常见的Javascript的spray heap代码,想分析一下它的内存分配方式, <script> ... function spray_heap() { var payload = "..."; var ret = 0x0c0c0c0c; var heap_chunk_size = 0x40000; var nops_led_size = heap_chunk_size - (payload.length * 2) var nops_led = unescape("%u0c0c%u0c0c"); while (nop_sled.length < nop_sled_size) nop_sled += nop_sled; heap_chunks = new Array(); heap_chunks_num = (ret - heap_chunk_size)/heap_chunk_size; for (var i = 0 ; i < heap_chunks_num ; i++) heap_chunks = nop_sled + payload; <=== A } </script>
Q:上面代码中执行A句时,如何查看Javascript在堆中分配的堆块数据结构? 按照一些资料来看,堆块的数据结构大体如下:
_____________________________________ | | | | | Header | Length | | |________|_________| | | | | | | __________| | | | | | |NULL |NULL| |__________________________|_____|____|
因为想验证资料上的数据,所以想用Windbg实际查看一下,但是又不知该如何调试。 请大家指点,谢谢!
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-11-23, 13:36 下午
|
不及格的程序员-八神
注册: 2009-11-11
发 贴: 22
|
Re: 如何调试Javascript语言的内存(堆)分配?
|
|
|
|
针对浏览器的不对 js 引擎 解析js的方式也不同,大部分浏览器都是解释执行的,
而v8则是编译本地码,而这些引擎的实现一般都以c++在背后作一些事情,或者提供一些接口,供外部使用.
如果你想调试具体内存分配的话,我认为你应该根踪相应js引擎模块.
每个浏览器安装目录下都会有相应的dll,你可以试试,对于win32调试我不在行,我也只能说这么多.
不及格的程序员-八神
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » WinDbg » Re: 如何调试Javascript语言的内存(堆)分配?
|
|
|
|
|
|