我们正在使用 cdb(winDBG 的命令行版本)来解析 cab。为了在文件中获取输出,我们使用 -logo 输出来指定输出文件。对于某个出租车,我们收到“ CvRegToMachine(x86) 0x7536 转换失败”超过一百万次。
基本上,我们得到了一个巨大的解析代码日志,将近 1GB,并且每行都用上面的字符串填充。
我们正在使用以下 cdb 命令
cdb -z "abc.cab" -y "SymbolsPath" -G -logo "outputfile" -lines -c ".kframes 100;!analyze -v;!load msec.dll;!exploitable - v;vertarget;lmv;q"
有没有人知道这里可能出了什么问题?
问问题
349 次
1 回答
1
你cannot use -c and -G at the same time
-c 需要第一次中断来读取初始
命令并在你需要运行代码时对其采取行动使用 g; 在 -c 命令的末尾
也很多次-c commands need to be provided first
,被调试者需要
在命令行的末尾
cdb -c "<some cmd;someother cmd;g>" -z foo.cab
.load
不!load
应该用于加载第三方扩展
发出的字符串"CvReg.........."
似乎与 EitherSYMFLAG_NULL
或SYMFLAG_REGISTER
in 相关Flags member of SYMBOLINFO Struct
。
一个示例试用版没有跨越我机器中的代码路径,因此可能需要损坏的 dmp 或有关 dmp 文件的更多信息来查找喷出的原因
创建转储
C:\>dir /b *.cab
File Not Found
C:\>cdb -c ".dump /ma /b foo.cab;q" calc | grep -i -E "dmp|dump|wr"
0:000> cdb: Reading initial command '.dump /ma /b foo.cab;q'
Creating C:\DOCUME~1\Admin\LOCALS~1\Temp\foo.cab.dmp - mini user dump
Dump successfully written
Adding C:\DOCUME~1\Admin\LOCALS~1\Temp\foo.cab.dmp - added
Wrote foo.cab
C:\>dir /b *.cab
foo.cab
**将转储加载为调试对象(cdb)调试对象(foo.cab)并环顾四周**
C:\>cdb cdb -z foo.cab
0:000> s -u dbgeng l?39b000 "CvReg"
020341f8 0043 0076 0052 0065 0067 0054 006f 004d C.v.R.e.g.T.o.M.
0:000> # *(*20341f8 dbgeng l?39b000
dbgeng!MachineInfo::CvRegToMachine+0xfe:
021bf8ae 68f8410302 push offset dbgeng!`string' (020341f8)
0:000> # call*dbgeng!MachineInfo::CvRegToMachine dbgeng l?39b000
dbgeng!ImageInfo::CvRegToMachine+0x22:
021b62f2 e8b9940000 call dbgeng!MachineInfo::CvRegToMachine (021bf7b0)
0:000> # call*CvRegToMachine dbgeng l?39b000
dbgeng!ImageInfo::CvRegToMachine+0x22:
021b62f2 e8b9940000 call dbgeng!MachineInfo::CvRegToMachine (021bf7b0)
dbgeng!TypeInfoValueFromSymInfo+0x4b:
022541ab e82021f6ff call dbgeng!ImageInfo::CvRegToMachine (021b62d0)
dbgeng!TypedData::SetToSymbol+0x25f:
02285edf e8ec03f3ff call dbgeng!ImageInfo::CvRegToMachine (021b62d0)
dbgeng!TypedData::SetToSymbol+0x2da:
02285f5a e87103f3ff call dbgeng!ImageInfo::CvRegToMachine (021b62d0)
0:000> ln 0x21bf8ae
(021bf7b0) dbgeng!MachineInfo::CvRegToMachine+0xfe | (021bf8d0) dbgeng!Ma
chineInfo::GetContextState
在此函数上执行和 uf 会产生检查 SymbolInfo->Flags
并确定我上面的示例转储没有进入路径的检查
于 2014-05-26T23:04:57.133 回答