如何在Windbg预览中的文件之间共享Javascript代码?

时间:2018-01-13 20:22:31

标签: javascript windbg

如何在Windbg预览中的文件之间共享Javascript代码?

现在我有几个帮助方法,我已经复制并粘贴到不同的javascript文件中。我并不是所有使用javascript的人都有,所以如果这是一个愚蠢的问题我会道歉。

举个例子,我想说我想在多个文件中使用这个功能:

function GetGuid( objectPtr )
{
    return ExecuteCommandToString( "dt nt!_GUID " + objectPtr )
    .FindLineContaining("{").trim().replace("{", "").replace("}","");
}

1 个答案:

答案 0 :(得分:1)

我有一个common.js,它有一些通常可以重复使用的函数 host.diagnostics.debugLog()

我首先使用.scriptload

加载它

然后在其他js文件中我为这些函数创建一个var并使用它

看看这是否有帮助

常用功能文件的内容

C:\>cat c:\wdscr\common.js
function log(instr) {
    host.diagnostics.debugLog(instr + "\n");
}
function exec (cmdstr){
    return host.namespace.Debugger.Utility.Control.ExecuteCommand(cmdstr);
}

使用common.js

中的函数的js文件
C:\>cat c:\wdscr\usecommon.js
function foo(){
    var commonlog = host.namespace.Debugger.State.Scripts.common.Contents.log
    var commonexec = host.namespace.Debugger.State.Scripts.common.Contents.exec
    commonlog("we are using the logging function from the common.js file")

    var blah = commonexec("lma @$exentry")
    for(var a of blah) {
        commonlog(a)
    }
}

实际使用情况

C:\>cdb calc
Microsoft (R) Windows Debugger Version 10.0.16299.15 X86

0:000> .load jsprovider

0:000> .scriptload c:\wdscr\common.js
JavaScript script successfully loaded from 'c:\wdscr\common.js'

0:000> .scriptload c:\wdscr\usecommon.js
JavaScript script successfully loaded from 'c:\wdscr\usecommon.js'

0:000> dx @$scriptContents.foo()

we are using the logging function from the common.js file 
start    end        module name
00f10000 00fd0000   calc       (deferred)
@$scriptContents.foo()
0:000>