|
|
[求助]如何获取运行中的pe导入地址和函数名
推荐你查阅一下PE头结构相关的文章,PE头结构依次是: DOS MZ头,64字节; 然后是 typedef struct _IMAGE_NT_HEADERS { ULONG Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; OptionalHeader中的最后一个字段 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 这个数组长16,其中第一个元素代表导出表,第二个元素是导入表。 里面有导入表的RVA和size。 转成VA后,就是导入表的起始地址。 开始就是一堆
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
union {
ULONG Characteristics; // 0 for terminating null import descriptor
ULONG OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
} DUMMYUNIONNAME;
ULONG TimeDateStamp; // 0 if not bound,
// -1 if bound, and real date\time stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)
ULONG ForwarderChain; // -1 if no forwarders
ULONG Name;
ULONG FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
} IMAGE_IMPORT_DESCRIPTOR;
导入表结构涉及到双桥结构,INT IAT。具体还得自己琢磨琢磨 |
|
|
|
|
|
[求助]如何获取运行中的pe导入地址和函数名
当然不是,思路是这样: 1. 获取进程的PEB地址, CONTEXT ThreadCxt; ThreadCxt.ContextFlags = CONTEXT_FULL; HANDLE hCurThread = GetCurrentThread(); GetThreadContext(hCurThread, &ThreadCxt); printf("Target PEB Addr : 0x%08X.\n", ThreadCxt.Ebx); 2. 通过PEB地址找到exe模块的基地址,这里假设你想找的就是exe模块: ntdll!_PEB +0x000 InheritedAddressSpace : 0 '' +0x001 ReadImageFileExecOptions : 0 '' +0x002 BeingDebugged : 0x1 '' +0x003 BitField : 0x8 '' +0x003 ImageUsesLargePages : 0y0 +0x003 IsProtectedProcess : 0y0 +0x003 IsLegacyProcess : 0y0 +0x003 IsImageDynamicallyRelocated : 0y1 +0x003 SkipPatchingUser32Forwarders : 0y0 +0x003 SpareBits : 0y000 +0x008 Mutant : 0xffffffff`ffffffff Void +0x010 ImageBaseAddress : 0x00000000`00390000 Void +0x018 Ldr : 0x00000000`77222640 _PEB_LDR_DATA +0x020 ProcessParameters : 0x00000000`00292c60 _RTL_USER_PROCESS_PARAMETERS +0x028 SubSystemData : (null) +0x030 ProcessHeap : 0x00000000`00290000 Void +0x038 FastPebLock : 0x00000000`7722a960 _RTL_CRITICAL_SECTION +0x040 AtlThunkSListPtr : (null) +0x048 IFEOKey : (null) 这个是win7 x64下peb结构,里面找到ImageBaseAddress; 3,模块基地址找到了,导入表地址就能找到,相关结构在头文件ntimage.h里,自己对应解析一下吧。 |
|
|
[求助]如何获取运行中的pe导入地址和函数名
可以分析静态的PE文件的导入表,一般来讲,这跟运行起来,内存中的导入函数表是一致的。当然真实的函数地址涉及到内存地址的转换。 |
|
|
[求助]关于PE文件的数字签名
鸟神,分享一下嘛 |
|
|
求教:IE浏览器主页锁定的原理?
想了解一下这个原理 |
|
|
求教:IE浏览器主页锁定的原理?
我看现在安全软件不光是保护注册表,即使注册表值改成其他的了,如果是主页锁定的状态,打开IE,主页还是安全软件设置锁定的那个主页。 |
|
|
[求助]请教在驱动层判定二进制文件的问题
嗯,我其实想要签名信息 |
|
|
软件如何去掉登陆界面
我曾经做过一件类似的事情,就是注入一个dll到exe文件,这个dll干的事情就是检测登陆窗口,一旦出现这个窗口,就发送点击取消按钮的鼠标消息,这样,看起来,程序每次就直接进入到主界面。几乎看不见登陆界面弹出来。这样做一是代价比较低,二是比较安全,没破坏exe原有代码逻辑。 |
|
|
[求助]请教在驱动层判定二进制文件的问题
自己写代码,具体指什么? 抛到应用层,应用层处理了,再通知RING0,似乎搞复杂了,理论上,RING3能做的,RING0也能做。 除了签名,还有没有其他特征信息用来标志一个进程的? |
|
|
求教:IE浏览器主页锁定的原理?
你是指CmRegisterCallback吧,我的理解这个只能用来跟踪注册表状态,能阻止修改注册表吗? |
|
|
求教:IE浏览器主页锁定的原理?
解释一下? |
|
|
求教:IE浏览器主页锁定的原理?
目前主流的安全软件,360,金山,QQ的锁定主页的方法都是HOOK住内核层注册表相关API,ZwCreateKey,ZwOpenKey等等。这样在应用层做的任何试图修改注册表改主页的尝试都是徒劳。可行的思路是绕过安全软件的假API,得到原始的API。这涉及到内核态HOOK相关的技术。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值