首页
社区
课程
招聘
如何获取程序本身的代码段内存地址和大小
发表于: 2016-8-16 15:05 4190

如何获取程序本身的代码段内存地址和大小

2016-8-16 15:05
4190
如何获取程序本身的代码段内存地址和大小,折腾了几天头都大了,求助一下大腿


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 265
活跃值: (221)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
去看看区段的结构吧,看过之后就不会这么问了
2016-8-16 15:14
0
雪    币: 16495
活跃值: (2518)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
3
typedef struct _IMAGE_SECTION_HEADER {
    BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];
    union {
            DWORD   PhysicalAddress;
            DWORD   VirtualSize;
    } Misc;
    DWORD   VirtualAddress;
    DWORD   SizeOfRawData;
    DWORD   PointerToRawData;
    DWORD   PointerToRelocations;
    DWORD   PointerToLinenumbers;
    WORD    NumberOfRelocations;
    WORD    NumberOfLinenumbers;
    DWORD   Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

同楼上, 看下PE格式区段结构, WinNT.h中, 这种问题就不用出50kb了
2016-8-16 15:26
0
雪    币: 22
活跃值: (458)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
#include <IOSTREAM.H>
#include <Windows.h>

int main(int argc, char* argv[])
{

        HMODULE phModule = GetModuleHandle(NULL);
        PIMAGE_DOS_HEADER pimDH = (PIMAGE_DOS_HEADER) phModule;
        PIMAGE_NT_HEADERS pHdr = (PIMAGE_NT_HEADERS) ((char*)phModule + pimDH->e_lfanew);
        PIMAGE_SECTION_HEADER pFirstSec = (PIMAGE_SECTION_HEADER)(pHdr + 1);
       
        char str_test[100];
        wsprintfA(str_test,"VirtualAddress:%x\nVirtualSize:%x", (char*)phModule + pFirstSec->VirtualAddress,pFirstSec->Misc.VirtualSize);

    cout<<str_test<<endl;
        return 0;
}

悬赏发来吧,做人要讲诚信
2016-8-16 20:39
0
游客
登录 | 注册 方可回帖
返回
//