能力值:
( LV3,RANK:30 )
|
-
-
2 楼
可以从网上下载mfc100.lib文件放到OD的LIB目录
点OD的菜单 调试-选择符号路径,设置成OD的LIB目录
再点选择导入库
点添加,再点处理
然后重新载入程序,即可正常显示
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
非常感谢! 好像找不到哪里下载mfc100.lib,你能发给我吗,或作为附件贴这? 是不是vs2010里面有?
|
能力值:
( LV3,RANK:30 )
|
-
-
4 楼
论坛可以找到,lib确实不好找,vs里应该有
http://bbs.pediy.com/showthread.php?t=129634
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
再次感谢,现在能够识别了, 但我还是看不懂,比如这句
013DD98E |. 8B7D 08 mov edi,[arg.1]
013DD991 |. 8BCF mov ecx,edi
013DD993 |. FF15 C8DD4C01 call dword ptr ds:[<&mfc100.#316_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::C... ; mfc100.645B753C
#316 号函数到底干啥的, 只知道处理字符串的
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
013DD9C4 |. FF15 E4D84C01 call dword ptr ds:[<&mfc100.#7875_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::... ; mfc100.6456D95E
013DD9CA |. 50 push eax
013DD9CB |. 8BCF mov ecx,edi
013DD9CD |. 8975 FC mov [local.1],esi
013DD9D0 |. FF15 E4DA4C01 call dword ptr ds:[<&mfc100.#1313_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::... ; mfc100.64563EB9
013DD9D6 |. 8D4D 10 lea ecx,[arg.3]
013DD9D9 |. 885D FC mov byte ptr ss:[ebp-4],bl
013DD9DC |. FF15 CCDD4C01 call dword ptr ds:[<&mfc100.#901_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::~... ; mfc100.645682A2
013DD9E2 |. 53 push ebx
013DD9E3 |. 6A 2D push 2D
013DD9E5 |. 8BCF mov ecx,edi
013DD9E7 |. FF15 04DE4C01 call dword ptr ds:[<&mfc100.#4143_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::... ; mfc100.6456D988
013DD9ED |. 3BC3 cmp eax,ebx
013DD9EF |. 7C 26 jl short Analyzer.013DDA17
013DD9F1 |. 50 push eax
013DD9F2 |. 8D45 10 lea eax,[arg.3]
013DD9F5 |. 50 push eax
013DD9F6 |. 8BCF mov ecx,edi
013DD9F8 |. FF15 68DA4C01 call dword ptr ds:[<&mfc100.#7487_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::... ; mfc100.6456D7FF
013DD9FE |. 50 push eax
除了序号外, 每个识别的函数怎么看起来没啥分别
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
加载问题基本解决了,但还是有些基本问题不懂,下面是一个典型的字符串处理函数, IDA 翻译的伪代码如下. 看不懂的地方我标了一下,高手能解释一下吗?
int __cdecl sub_47D97D(int a1, int a2, int a3)
{
int v3; // eax@1
int v4; // eax@2
int v5; // eax@5
int v6; // eax@5
int v7; // eax@6
((void (__thiscall *)(int, _DWORD))ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>)(
a1, [I]//这句什么意思[/I]
0);
v3 = 0;
while ( a3 > 0 )
{
--a3;
v4 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Find(45, v3);
if ( v4 == -1 )
return a1;
v3 = v4 + 1;
}
v5 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Mid(a2, &a3, v3);
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::operator_(a1, v5); ////这句什么意思?
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::_CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>(&a3); [I]////这句什么意思[/I]
v6 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Find(45, 0);
if ( v6 >= 0 )
{
v7 = ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::Left(a1, &a3, v6);
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::operator_(a1, v7); [I]//what mean?[/I]
ATL::CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>::_CStringT<char_StrTraitMFC_DLL<char_ATL::ChTraitsCRT<char>>>(&a3); [I]//这句什么意思[/I]
}
return a1;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
关于 mfc100 dll 函数识别问题, kisesy方法不错,但有不足,主要是函数名没有全部显示出来. 另外最佳解决办法见此帖:
http://bbs.pediy.com/showthread.php?t=132400
|
|
|