上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
C 列举指定进程的模块
作者:未知 申领版权
2010年11月09日 共有 1597 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    
    本文起源于这样一个问题,如何得到某个EXE中加载的某个DLL的基址(BaseAddress)呢?有人回答,用远程注入,CreateRemoteThread之后再GetModuleHandle,因为这个回答实现的复杂性和不确定性,此人没能将发帖者的可用分转换为自己的专家分。没错,这就是黄色论坛CSDN(床上等你)
    
    很多人都用过CreateToolhelp32Snapshot,做什么呢?列举进程对吧?嘻嘻,其实它也可以用来列举某一个进程加载的模块噢,下面Tr0j4n给出参考代码
    
    BOOL ListProcessModules( DWORD dwPID )
    {
    HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
    MODULEENTRY32 me32;
    
    // Take a snapshot of all modules in the specified process.
    hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
    if( hModuleSnap == INVALID_HANDLE_VALUE )
    {
    printError( "CreateToolhelp32Snapshot (of modules)" );
    return( FALSE );
    }
    
    // Set the size of the structure before using it.
    me32.dwSize = sizeof( MODULEENTRY32 );
    
    // Retrieve information about the first module,
    // and exit if unsuccessful
    if( !Module32First( hModuleSnap, &me32 ) )
    {
    printError( "Module32First" ); // Show cause of failure
    CloseHandle( hModuleSnap );     // Must clean up the snapshot object!
    return( FALSE );
    }
    
    // Now walk the module list of the process,
    // and display information about each module
    do
    {
    printf( "\n\n     MODULE NAME:     %s",             me32.szModule );
    printf( "\n     executable     = %s",             me32.szExePath );
    printf( "\n     process ID     = 0x%08X",         me32.th32ProcessID );
    printf( "\n     ref count (g) =     0x%04X",     me32.GlblcntUsage );
    printf( "\n     ref count (p) =     0x%04X",     me32.ProccntUsage );
    printf( "\n     base address   = 0x%08X", (DWORD) me32.modBaseAddr );
    printf( "\n     base size      = %d",             me32.modBaseSize );
    
    } while( Module32Next( hModuleSnap, &me32 ) );
    
    // Do not forget to clean up the snapshot object.
    CloseHandle( hModuleSnap );
    return( TRUE );
    }
    
    
    恩。代码结束了,您掌握了这个小小的技巧了吗? 
    

    

 

相关新闻

testtest
上善制度的炼成
新时代呼唤管理理论创新——大卫�梯斯与动态能力理论
创业的不变逻辑
创新管理需要回答的5个问题
十一、弥离
十、转院
九、生机
八、传染
七、求血

您可能对这些感兴趣  

人工智能前沿技术与产业发展趋势(四)
人工智能前沿技术与产业发展趋势(三)
人工智能前沿技术与产业发展趋势(二)
人工智能前沿技术与产业发展趋势(一)
人工智能给产业发展将带来什么惊喜?
ASP、JSP、PHP 三种编程技术比较
修改U盘图标
windows 7 的上帝模式
windows 的一些快捷键 尽量不要用鼠标了
怎样去掉桌面图标阴影

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》