首页
社区
课程
招聘
[原创]告别硬编码-发个获取未导出函数地址的Dll及源码
发表于: 2013-7-2 15:45 43066

[原创]告别硬编码-发个获取未导出函数地址的Dll及源码

2013-7-2 15:45
43066
收藏
免费 5
支持
分享
最新回复 (49)
雪    币: 10845
活跃值: (17236)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
暂时看不懂哦,先支持了再说啊
2013-7-3 16:52
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
同问 这样都可加精?
msdn上关于dbghelp的资料不少吧?
2013-7-3 17:04
0
雪    币: 70
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
我正在找这资料你就发了。。。。。。怎么这样呢
2013-7-3 19:48
0
雪    币: 870
活跃值: (1033)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
mark 之
2013-7-3 20:02
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
mark
2013-7-4 09:06
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
mark
2013-7-4 11:05
0
雪    币: 119
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
[QUOTE=organic;1194444]还在为找内核未导出函数地址而苦恼嘛?
还在为硬编码通用性差而不爽吗?
还在为暴搜内核老蓝屏而痛苦吗?
请看这里:

赶脚楼主以前做广告的啊。
2013-7-4 11:23
0
雪    币: 46
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
求拜师。。。
2013-7-19 15:15
0
雪    币: 31
活跃值: (28)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
34
Make  备用
2013-8-14 09:39
0
雪    币: 16
活跃值: (400)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
WPE就用到了这个方法
2013-8-14 15:26
0
雪    币: 16
活跃值: (400)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
在我这SymEnumSymbols可用,Win7 64位.贴个C++的版本
#include "stdafx.h"
#include <Windows.h>
#include <imagehlp.h>
#include <locale.h>
#pragma comment(lib,"DbgHelp.lib")

BOOL CALLBACK CallBackProc( PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext )
{
    printf( "函数名: %s\r\n地址: %08X \r\n\r\n", pSymInfo->Name, pSymInfo->Address );
    return TRUE;
}

char* UnicodeToAnsi( const wchar_t* szStr, char* szDest )
{
    int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL );
    if ( nLen == 0 )
    {
        return NULL;
    }
    char* pResult = new char[nLen];
    WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL );
    strcpy( szDest, pResult );
    delete pResult;
    return szDest;
}

BOOL GetSymbol( LPCTSTR FileName )
{
    HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId() );
    CloseHandle( hProcess );
    
    if ( !SymInitialize( hProcess, NULL, FALSE ) )
    {
        return FALSE;
    }
    
    DWORD dwOpt = SymGetOptions();
    SymSetOptions( dwOpt | SYMOPT_DEFERRED_LOADS | SYMOPT_UNDNAME | SYMOPT_CASE_INSENSITIVE );
    
    char sFileName[MAX_PATH] = {0};
    UnicodeToAnsi( FileName, sFileName );
    DWORD64 dwSymModule = SymLoadModuleEx( hProcess, NULL, sFileName, NULL, 0, 0, NULL, 0 );
    
    if ( 0 == dwSymModule )
    {
        SymCleanup( hProcess );
        return -1;
    }
    
    if ( !SymEnumSymbols( hProcess, dwSymModule, 0, ( PSYM_ENUMERATESYMBOLS_CALLBACK )CallBackProc, NULL ) )
    {
        SymCleanup( hProcess );
        return -1;
    }
    
    return SymCleanup( hProcess );
}

int _tmain( int argc, _TCHAR* argv[] )
{
    const TCHAR* sDllPath = _T( "C:\\Windows\\System32\\WS2_32.DLL" );
    if ( !GetSymbol( sDllPath ) )
    {
        return -1;
    }
    getchar();
    return 0;
}
2013-8-14 16:59
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
37
mark
2013-8-16 09:09
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
http://msdn.microsoft.com/zh-cn/library/ms679291.aspx
2013-8-28 00:26
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
39
不错,可以看看
2013-11-12 18:44
0
雪    币: 40
活跃值: (627)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
getcurrentprocess返回的不是id么
2013-11-12 22:18
0
雪    币: 105
活跃值: (38)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
41
。。符号。。。。。 支持,符号要网络支持。。追求效率的人儿可以略过。。。哈
2013-11-14 16:38
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
mark
2013-11-14 16:41
0
雪    币: 10
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
占楼占楼,暴力抗拆
2013-12-12 23:16
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
谢谢
很不错
2013-12-12 23:46
0
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
mark,mark~
2013-12-22 20:27
0
雪    币: 7
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
我按照你的方法用C++写了一个
最后卡在SymGetSymFromName
GetLastError找不到模块!
2014-6-27 17:36
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
好东西,留着以后用
2014-10-25 15:15
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
48
联网获取符号文件并解析
2014-10-25 15:36
0
雪    币: 158
活跃值: (339)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
我想起了DIA,不过是RING3的COM的东西。
2014-10-26 15:11
0
雪    币: 141
活跃值: (54)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
50
先mark,以备后用
2014-10-27 18:13
0
游客
登录 | 注册 方可回帖
返回
//