什么是Nanocode
Nanocode
是一款非常好用的调试器,界面友好且功(随)能(意)丰(调)富(教),前几天我用Nanocode
调试DLL
装载函数时想着能不能整一个自动显示地址链表的功能,于是就动手了,以下是全过程:
1.安装pykd
Nanocode
支持python
并兼容windbg
,我们可以用py
写这个小插件
先pip3 install pykd
,然后把https://githomelab.ru/pykd/pykd-ext
的release
中x64
下的pykd.dll
拷贝到Nonocode/exts
下然后启动即可。
注意:像更换解释器可以使用!select version命令
2.实现
telescope
有三个参数,<address>
与<size>
与<line>
分别是链表首地址,尺寸与打印行数
我们可以先判断调试进程的类型来给参数赋予默认值,并找到相关api来循环取地址,以下api可以从va
地址得到相应count
个size
个bytes
的值
loadBytes( va, count )
loadWords( va, count )
loadDWords( va, count )
loadQWords( va, count )
loadSignBytes( va, count )
loadSignWords( va, count )
loadSignDWords( va, count )
loadSignQWords( va, count )
loadPtrs( va, count )
全部代码如下:
from pykd import *
from optparse import OptionParser
address=0
line=8
size=8
args=[]
addlist={
}
getmethod=[0