首页
社区
课程
招聘
mfc 100 导出函数问题
发表于: 2013-12-30 21:30 5554

mfc 100 导出函数问题

2013-12-30 21:30
5554
大家好,问一个看似比较简单的问题,就是我碰到的一个程序里面用到了mfc100.dll的导出函数,但都是序号的形式.我的问题是如何快速知道每个函数的实际功能呢,难道一个个的跟进,那样太痛苦了
谢谢了.

below show some extracted codes:

0018D9F8 |. FF15 68DA2700 call dword ptr ds:[<&mfc100.#7487>] ; mfc100.6736D7FF
0018D9FE |. 50 push eax
0018D9FF |. 8BCF mov ecx,edi
0018DA01 |. C745 FC 02000>mov [local.1],2
0018DA08 |. FF15 E4DA2700 call dword ptr ds:[<&mfc100.#1313>] ; mfc100.67363EB9
0018DA0E |. 8D4D 10 lea ecx,[arg.3]
0018DA11 |. FF15 CCDD2700 call dword ptr ds:[<&mfc100.#901>] ; mfc100.673682A2

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 6499
活跃值: (3117)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
可以从网上下载mfc100.lib文件放到OD的LIB目录

点OD的菜单 调试-选择符号路径,设置成OD的LIB目录

再点选择导入库

点添加,再点处理

然后重新载入程序,即可正常显示
上传的附件:
2013-12-30 22:13
0
雪    币: 159
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常感谢! 好像找不到哪里下载mfc100.lib,你能发给我吗,或作为附件贴这?  是不是vs2010里面有?
2013-12-30 22:58
0
雪    币: 6499
活跃值: (3117)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
论坛可以找到,lib确实不好找,vs里应该有
http://bbs.pediy.com/showthread.php?t=129634
2013-12-30 23:21
0
雪    币: 159
活跃值: (25)
能力值: ( 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 号函数到底干啥的, 只知道处理字符串的
2013-12-30 23:41
0
雪    币: 159
活跃值: (25)
能力值: ( 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

除了序号外, 每个识别的函数怎么看起来没啥分别
2013-12-30 23:45
0
雪    币: 159
活跃值: (25)
能力值: ( 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;
}
2013-12-31 03:12
0
雪    币: 159
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
关于 mfc100 dll 函数识别问题,  kisesy方法不错,但有不足,主要是函数名没有全部显示出来.  另外最佳解决办法见此帖:  

     http://bbs.pediy.com/showthread.php?t=132400
2013-12-31 03:48
0
游客
登录 | 注册 方可回帖
返回
//