1.  
    BOOL InitSymHandler(HANDLE hProc)
  2.  
    {
  3.  
    CHAR SymPath[MAX_PATH], CurDir[MAX_PATH];
  4.  
     
  5.  
    GetCurrentDirectoryA(sizeof(CurDir) / sizeof(CurDir[0]), CurDir);
  6.  
    SymSetOptions(SYMOPT_DEFERRED_LOADS|SYMOPT_EXACT_SYMBOLS|SYMOPT_CASE_INSENSITIVE|SYMOPT_UNDNAME);
  7.  
    wsprintfA(SymPath, "SRV*%s\\Symbols*http://msdl.microsoft.com/download/symbols", CurDir);
  8.  
    return SymInitialize(hProc, SymPath, FALSE);
  9.  
    }
  10.  
     
  11.  
    BOOL LoadSymModule(HANDLE hProc, HMODULE hDll)
  12.  
    {
  13.  
    CHAR szFile[MAX_PATH], SymFile[MAX_PATH];
  14.  
    MODULEINFO ModInfo;
  15.  
     
  16.  
    GetModuleFileNameA(hDll, szFile, sizeof(szFile) / sizeof(szFile[0]));
  17.  
    GetModuleInformation(hProc, hDll, &ModInfo, sizeof(ModInfo));
  18.  
    if (SymGetSymbolFile(hProc, NULL, szFile, sfPdb, SymFile, MAX_PATH, SymFile, MAX_PATH))
  19.  
    {
  20.  
    return (SymLoadModule64(hProc, NULL, szFile, NULL, (ULONG_PTR)ModInfo.lpBaseOfDll, ModInfo.SizeOfImage) != 0);
  21.  
    }
  22.  
    return FALSE;
  23.  
    }
  24.  
     
  25.  
    BOOL CALLBACK SymCallback(PSYMBOL_INFO lpSymInfo, ULONG SymbolSize, PVOID UserContext)
  26.  
    {
  27.  
    if (lstrcmpA(lpSymInfo->Name, "PsGetNextProcess") == 0)
  28.  
    {
  29.  
    DebugBreak();
  30.  
    }
  31.  
    return TRUE;
  32.  
    }
  33.  
     
  34.  
    int _tmain(int argc, _TCHAR* argv[])
  35.  
    {
  36.  
    if (InitSymHandler(GetCurrentProcess()))
  37.  
    {
  38.  
    HMODULE hDll = LoadLibraryEx(TEXT("ntoskrnl.exe"), NULL, DONT_RESOLVE_DLL_REFERENCES);
  39.  
     
  40.  
    if (LoadSymModule(GetCurrentProcess(), hDll))
  41.  
    {
  42.  
    SymEnumSymbols(GetCurrentProcess(), (ULONG_PTR)hDll, NULL, SymCallback, NULL);
  43.  
    }
  44.  
    FreeLibrary(hDll);
  45.  
    SymCleanup(GetCurrentProcess());
  46.  
    }
  47.  
    getchar();
  48.  
    return 0;
  49.  
    }

jpg改rar 

利用pdb获取未导出符号的更多相关文章

  1. 告别硬编码-发个获取未导出函数地址的Dll及源码

    还在为找内核未导出函数地址而苦恼嘛? 还在为硬编码通用性差而不爽吗? 还在为暴搜内核老蓝屏而痛苦吗? 请看这里: 最近老要用到内核未导出的函数及一些结构,不想再找特征码了,准备到网上找点符号文件解析的 ...

  2. 获取Linux内核未导出符号的几种方式

    从Linux内核的2.6某个版本开始,内核引入了导出符号的机制.只有在内核中使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL导出的符号才能在内核模块中直接使用.然而,内核并没有导出所 ...

  3. golang: 利用unsafe操作未导出变量

    unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁.uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它 ...

  4. C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    详解link  有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错 ...

  5. (转载) C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    转载http://blog.csdn.net/neo_ustc/article/details/9024839 有 些人写C/C++(以下假定为C++)程序,对unresolved external ...

  6. c#反射机制学习和利用反射获取类型信息

    反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...

  7. GCC制作动态库导出符号表【转】

    转自:https://blog.csdn.net/whb_fei/article/details/76974543 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  8. pdb 源码索引符号服务器创建过程

    pdb是调试程序必不可少的东西,它保存着一个exe或dll的调试信息,对pdb进行源码索引可以快速找到软件对应该版本的代码,本文以subversion版本控制服务器进行介绍 一.需要安装的软件 win ...

  9. 利用Python获取统计自己的qq群成员信息

    利用python获取自己的qq群成员信息! 首先说明一下需要使用的工具以及技术:python3 + selenium selenium安装方法:pip install selenium 前提:获取自己 ...

随机推荐

  1. (笔记)Linux下怎么安装tar.gz的软件

    一般这种的就是源代码.先下载下来.然后cd到下载目录.用tar xvfz XXX.tar.gz的解压.然后进入解压后的目录. 打./configure生成配置文件.打make对源代码进行编译,生成库和 ...

  2. 用ARM实现音乐电子相册

    (前段时间在做嵌入式的课程设计,特将学习心得整理如下) 一.开发工具及环境介绍 1.ARM处理器 ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计. ARM ...

  3. ZBar与ZXing使用后感觉

    [原]ZBar与ZXing使用后感觉(上) 2014-3-18阅读2011 评论1 最近对二维码比较感兴趣,还是那句老话,那么我就对比了一下zxing和zbar 如果对于这两个的背景不了解的话,可以看 ...

  4. LintCode #2 尾部的零

    计算阶乘尾部的0的个数,初一看很简单. 先上代码 public static long GetFactorial(long n) { || n == ) ; ); } //Main方法中调用 ); ; ...

  5. Windows命令处理进程

    1.  查看进程命令 tasklist 2.以翻页模式查看进程 tasklist  |  more 3.搜索关键字查找进程 tasklist  |  findstr  "cmd" ...

  6. Http请求的工具

    1.火狐的插件 HttpRequester 安装方法:火狐浏览器的最右上角的菜单,打开附件组件 ,搜索:HttpRequester,重启火狐浏览器.在菜单栏的工具下可以看到 HttpRequester ...

  7. [SQLite3]connection string的连接池参数引发的错误

    最近在.net中使用Sqlite数据库,发现.net的驱动做得不错,而且实现了加密功能.于是想给自己的数据库加上口令,结果,多次实验都以失败告终: 链接数据库,然后ChangePassword都成功执 ...

  8. Unity3D编辑器之不实例化Prefab获取删除更新组件

    原文链接:http://www.xuanyusong.com/archives/3727

  9. Salience Model

    Who is a stakeholder? Simply anyone with a stake in the project either direct or indirect. PMBOK say ...

  10. MongoDB 连接池

    http://www.cnblogs.com/huangfox/archive/2012/04/01/2428947.html http://www.iteye.com/problems/97350