首页
社区
课程
招聘
[旧帖] [转帖]dll2lib探究 0.00雪花
发表于: 2012-12-16 20:17 1907

[旧帖] [转帖]dll2lib探究 0.00雪花

2012-12-16 20:17
1907
自己在写程序,为了引用别人的dll文件,不得不搞下符号库,就有了此文的搜索之旅
以下是原作者所写:
//为无LIB的DLL制作LIB函数符号输入库   
  本文介绍了在VC中针对无LIB时的DLL隐式链接,制作可供VC++使用的LIB函数符号输入库。具体步骤如下:   
   
    一、使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件   
  EXAMPLE:     
   
  DUMPBIN   VideoDeCoder.dll   /EXPROTS   /OUT:VideoDeCoder.def   
    二、将导出的.DEF文件整理为一符合.DEF个数的函数导出文件   
  EXAMPLE:VideoDeCoder.DEF   文件内容如下Dump   of   file   VideoDeCoder.dll                                                                     
                                                                                                                                                  
                   File   Type:   DLL                                                                                                   
                                                                                                                                                  
                       Section   contains   the   following   exports   for   VideoDeCoder.dll      
                                                                                                                                                  
                                         0   characteristics                                                                        
                           3D49E48F   time   date   stamp   Fri   Aug   02   09:46:55   2002                     
                                   0.00   version                                                                                       
                                         1   ordinal   base                                                                              
                                       11   number   of   functions                                                               
                                       11   number   of   names                                                                        
                                                                                                                                                  
                           ordinal   hint   RVA             name                                                                    
                                                                                                                                                  
                                       1         0   00010F60   _TM_ClearDecoderBuff@4                                
                                       2         1   00010E80   _TM_CloseDecoder@4                                       
                                       3         2   00010F00   _TM_DecodePicture@4                                      
                                       4         3   00010ED0   _TM_DecodePictureHeader@4                          
                                       5         4   00010FD0   _TM_GetFileEnd@4                                            
                                       6         5   00011030   _TM_GetUValue@4                                             
                                       7         6   00011060   _TM_GetVValue@4                                             
                                       8         7   00011000   _TM_GetYValue@4                                             
                                       9         8   00010E10   _TM_OpenDecoder@8                                          
                                     10         9   00010F30   _TM_ReturnType@4                                            
                                     11         A   00010F90   _TM_SetFileEnd@8                                            
                                                                                                                                                  
                       Summary                                                                                                              
                                                                                                                                                  
                                   2000   .data                                                                                            
                                   1000   .rdata                                                                                          
                                   1000   .reloc                                                                                          
                                 15000   .text     
  按照以下方法整理:   
  1)添加LIB说明   LIBRARY   "VideoDeCoder"                         ;"xx"为DLL名称   
  DESCRIPTION   "VideoDeCoder   library"      
  2)去掉导出函数说明端以外的内容,在LIB说明下添加   "EXPROTS"   说明导出函数   LIBRARY   "VideoDeCoder"   
  DESCRIPTION   "VideoDeCoder   library"   
   
  EXPORTS   
                          ordinal   hint   RVA             name                                                      
                                                                                                                                    
                                       1         0   00010F60   _TM_ClearDecoderBuff@4                          
                                       2         1   00010E80   _TM_CloseDecoder@4                          
                                       3         2   00010F00   _TM_DecodePicture@                          
                                       4         3   00010ED0   _TM_DecodePictureH                          
                                       5         4   00010FD0   _TM_GetFileEnd@4                              
                                       6         5   00011030   _TM_GetUValue@4                                
                                       7         6   00011060   _TM_GetVValue@4                                
                                       8         7   00011000   _TM_GetYValue@4                                
                                       9         8   00010E10   _TM_OpenDecoder@8                           
                                     10         9   00010F30   _TM_ReturnType@4                              
                                     11         A   00010F90   _TM_SetFileEnd@8   
   3)将所有的函数放至行首,去掉   "hint"   和   "RVA"   数据,留下函数的序号   "ordinal"   ,在序号前加上   "@"   符号   形成   "_导出函数名@参数字节和   @序号"   此种格式(__stdcall   方式调用导出的函数符号是   "函数名称@参数字节和").   最后形成.DEF文件如下:   LIBRARY   "VideoDeCoder"  
       DESCRIPTION   "VideoDeCoder   library"   
   
      EXPORTS   
               
      TM_ClearDecoderBuff@4                           @1           
      TM_CloseDecoder@4                                   @2           
      TM_DecodePicture@4                                 @3           
      TM_DecodePictureHeader@4                     @4           
      TM_GetFileEnd@4                                       @5           
      TM_GetUValue@4                                         @6           
      TM_GetVValue@4                                         @7           
      TM_GetYValue@4                                         @8           
      TM_OpenDecoder@8                                     @9           
      TM_ReturnType@4                                     @10           
      TM_SetFileEnd@8                                     @11     
    三、使用VC++的LIB工具,带/DEF:(.def文件名)   /MACHINE:IX86(80X86机器),就输出符合VC++格式的的LIB文件了.   
   EXAMPLE:LIB   /DEF:VideoDeCoder.def   /MACHINE:IX86   
    四、接时带上LIB文件链接;注意的是当有些动态库DUMPBIN的只有函数名,无"@nn"的参数格式,如C++Builder写的DLL,输出就只有函数名符号,链接时就会报错:   error   LNK2002:unresolved   external   symbol   "functionname@nn"   提示程序中引入的函数符号无法识别,这时只要将DEF文件中相应的函数名称改为functionname@nn方式,重新建立   LIB,重新链接即可.  
     
   
  另:有一个叫dll2lib的软件更方便一些,就是确认函数参数和返回值有点

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 13
活跃值: (26)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持下哇哈哈。。。。
2012-12-16 20:26
0
雪    币: 3343
活跃值: (1243)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
纠结 发了这么多帖子 临时会员啥时候才能熬到头啊、、
2012-12-17 23:14
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持下楼主的分享精神
2012-12-18 00:05
0
雪    币: 3343
活跃值: (1243)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
谢谢支持哈~~
2013-1-4 13:04
0
游客
登录 | 注册 方可回帖
返回
//