再问 TDump ------全部分数!(144分)

  • 主题发起人 主题发起人 savenight
  • 开始时间 开始时间
S

savenight

Unregistered / Unconfirmed
GUEST, unregistred user!
1。请详细解释这个用TDump导出的文件(省略了一部分),比如如何调用,还有operator,<<,std::basic_ostream<char,等等是什么意思:
///////////////////////////////////////
...
Exports from cc3250mt.dll
; 15618 exported name(s), 15618 export addresse(s). ;Ordinal base is 1.
; Sorted by Name:
; ; RVA ; ; ;Ord. Hint Name
; ; -------- ---- ---- ----
; ; 000012B0 ; ;4 0000 operator delete(void *)
; ; 000012C0 ; ;5 0001 operator delete[](void *)
; ; 0006F67C 2222 0002 operator <<(std::basic_ostream<char, std::char_traits<char> >&, const bcd&)
; ; 000012E4 ; ;7 0003 operator new(unsigned int)
; ; 00001488 ; 11 0004 operator new[](unsigned int)
; ; 0006F6A0 2223 0005 operator >>(std::basic_istream<char, std::char_traits<char> >&, bcd&)
; ; 000750E0 2446 0006 TDiagGroup::TDiagGroup(unsigned char, unsigned char, const char *)
; ;00076B34 2464 000A TRegexp::TRegexp(const TRegexp&)
; ; 00076B6C 2465 000B TRegexp::~TRegexp()
; ; 00076B90 2466 000C TRegexp::copy_pattern(const TRegexp&)
; ; 00076C30 2468 000D TRegexp::find(const char *, unsigned int *, unsigned int) const
; ; 00076BE4 2467 000E TRegexp::gen_pattern(const char *)
; ; 000A9EF8 15262 000F TRegexp::maxpat
; ; 00052236 1799 0010 _CatchCleanup()
; ; 0005204A 1797 0013 _ReThrowException(unsigned int, unsigned char *)
; ; 000559F4 1806 001A __ThrowExceptionName()
; ; 000035C4 ; 40 001E __rwstd::_RW_array<int>::~_RW_array<int>()
////////////////////////////////////////

2。TDump对于导出的DLL,EXE,OCX等是否有限制?如果有最大限额是多少?
我在XP环境下执行如下命令时出错,而在2000环境下,没错。
; ;Tdump shell32.dll>a.txt
(shell32.dll在XP环境下有7.93 MB,在2000环境下2.24 MB)
 
1、我对TDump的输出也不太懂;
2、就你这个dll,应该是用C++编译的:从operator、std::、TRegexp::TRegexp等等
都可以看出来;
3、对这些类的调用,如果没有相应的头文件和.obj文件(或源代码),恐怕没办法
使用,不知其他富翁有没有办法;
4、在C++里,operator是重载运算符时使用的描述符;
“operator <<(std::basic_ostream<char, std::char_traits<char> >&, const bcd&)
是对<<运算符重载;
std是C++标准模板库,最大的特点是提供对多种抽象数据的灵活使用;
“std::basic_ostream<char, std::char_traits<char> >”、
“std::char_traits<char>”都是一种std类,第一个是以char和std::char_traits<char>
数据类型为参数建立的输出流,第二个是以char为处理的数据类型建立的某个类(不懂
这个类:-);
5、好像TDump对文件的大小不应该有限制,会不会是你要分析的那个shell32文件
正在被系统读锁定?
 
2。我在XP环境下执行如下命令时出错,而在2000环境下,没错。
光运行 Tdump shell32.dll ;先不要 “>a.txt”
看报告什么错误
还有,如果shell32.dll是被系统独占打开,而不是共享打开,那么不能读,你可以试试
是不是能够 copy shell.dll shell.0
如果不能copy说明给独占打开了,可能是xp的新特性
 
1、这个dll是c++运行库的动态库,连接的时候选择使用动态库,就说使用dll,
他和静态库一样,不过把所有函数导出而已
重载的操作符其实也是函数来的,他有特殊的名字
tdump -m cc3250mt.dll (注意-m参数)可以看到export的原名
 
皮皮:
I can copy it to another directory.
〉〉光运行 Tdump shell32.dll ;先不要 “>a.txt”
〉〉看报告什么错误
ERROR: Internal error at 0x42223f with base 0x400000
 
那么说,是这个dll比较特殊,已经不是严格合乎标准的 PE 的格式了
 
用tdump -m cc3250mt.dll 导出来的更那看懂:
; ;000012B0 ; ;4 0000 @$bdele$qpv
; ; 000012C0 ; ;5 0001 @$bdla$qpv
; ; 0006F67C 2222 0002 @$blsh$qr42std@%basic_ostream$c19std@%char_traits$c%%rx3bcd
; ; 000012E4 ; ;7 0003 @$bnew$qui
; ; 00001488 ; 11 0004 @$bnwa$qui
/////////////////////////////////
; ; ; ;000012B0 ; ;4 0000 operator delete(void *) ; ; ; ; ;1
对应 ; 000012B0 ; ;4 0000 @$bdele$qpv ; ; ; ; ; ; ; ; ; ; ;2
好像1给了参数,2没有?
 
我的意思是告诉你,其实我们看到那个函数带参数的,那是处理过的
-m 看到的古怪函数,是实际导出的函数名,这个名字才是实际的名字
c++这种把名字变得很古怪,叫做 mangle
其实它是把名字和参数类型按一定的规则糅合在一起,这样,相同函数名、不同参数
就生成了实际不同的函数名,这样就实现了函数的重载
 
那么对于 TRegexp::find(const char *, unsigned int *, unsigned int) const
我是不是可以在程序里直接调用了?(因为参数都知道了)
 
>>那么说,是这个dll比较特殊,已经不是严格合乎标准的 PE 的格式了
这可是shell32.dll呀?
 
1、cc3250mt.dll是bcb的runtime库,其实它的全部函数都定义在bcb的头文件里面找的到
而且bcb还提供了静态链接的选项,这样程序发布就不必带这个dll
对于其他的dll出现这种情况,你又没有头文件的话,一般的函数你可以调用,
但是象 TRegexp::find 这样的类成员函数,它是需要访问 TRegexp 对象的,
你如果不知道 TRegexp 是怎么定义的,你还是不能用
2、shell32.dll谁知道他有什么特殊,以前版本的winrar做的自解压exe,他就是把数据直接
加在exe的后面,这样的exe有些地方不是严格的pe的格式(但是windows可以执行它),
tdump看它就不行。winzip的自解压就座的比较好,pe的格式比较好,tdump就可以看它
 
tdump cc3250mt.dll a.txt(不要加>,这是tdump的用法之一).
我在XP下面试了,tdump %windir%/system32/shell32.dll test.txt是会出错的。
这可能是tdump自己的问题了。因为我可以用
dumpbin /exports /out:test.txt %windir%/system32/shell32.dll(VC中的东东),可
以通过的。
 
BeginDelphi:
开始我也是想用dumpbin测试一下,可是我的机子里没装。谢谢了!

看来,Tdump还是不敌dumpbin呀。
 
要看这些信息,怎么不找个专业的软件。
比如pe explorer,exesope等等。他们都比tdump或是dumpbin好用得多。
 
BeginDelphi:
那些我以前都有,只是上个月重装了XP系统,还没来得及装其他东西。

多谢PiPi., pxie, BeginDelphi.
 
后退
顶部