我可以自己创建它们并以某种方式导出它们(必须弄清楚如何)。但是在此之前,我真的很想知道IDA的标准结构定义中是否缺少某些内容。
#1 楼
PEB的结构是_PEB和PEB_LDR_DATA。您需要加载ntapi类型库,可以通过进入类型库视图(Shift + F11)并按Ins来添加它。#2 楼
如果您使用的是IDA FREE
,则此库和其他一些类型库不可用,如果您打算使用<43,则本教程将提供一些有关如何完成此操作的提示
操作系统winxp sp3 vm
create them yourself and export them somehow (would have to figure out how).
假设您正在ntkrnlpa.exe中反转PsGetProcessId()
(all opaque structures like EPROCESS can vary from os to os / hotfix to hotfix patch tuesday to patch tuesday )
,您发现84是EPROCESS-> PID,并希望将此信息提供给反汇编
创建一个名为
EPROCESS.h
的文本文件在文本文件中键入以下内容,然后保存以供以后使用
; Exported entry 872. PsGetProcessId
; Attributes: bp-based frame
; __stdcall PsGetProcessId(x)
public _PsGetProcessId@4
_PsGetProcessId@4 proc near
8B FF mov edi, edi
55 push ebp
8B EC mov ebp, esp
8B 45 08 mov eax, [ebp+8]
8B 80 84 00 00 00 mov eax, [eax+84h] <-----
5D pop ebp
C2 04 00 retn 4
_PsGetProcessId@4 endp
转到
ida free ->File->Load File->Parse Header File
或快捷方式ctrl+f9
浏览到
EPROCESS.h
成功后您应该会看到这是
ida information window
typedef struct EPROCESS
{
BYTE unknown[0x84];
DWORD Pid;
} EPROCESS, *EPROCESS;
视图->
open subviews->structures
或快捷方式shift+f9
按
insert
键单击add standard structure
开始输入peb
,您应该会看到窗口滚动并向您展示您刚刚广告的结构ded The initial autoanalysis has been finished.
C:\Documents and Settings\Admin\Desktop\EPROCESS.h: `successfully compiled`
转到idaview选择
84h
/ right click->select structure offset
并应用
Eprocess.Pid
反汇编会有点更具可读性
00000000 EPROCESS struc ; (sizeof=0x88, standard type)
00000000 unknown db 132 dup(?)
00000084 Pid dd ?
00000088 EPROCESS ends
开始在此eprocess.h中添加其他发现的偏移量,并再次加载它以更新
结构定义
很多可以通过windbg
查看结构定义的一部分,例如peb和peb_ldr_data可以这样查看
8B 80 84 00 00 00 mov eax, [eax+EPROCESS.Pid]
其他详细信息
如果您修改.h文件以添加另一个这样的结构成员,请注意以下几点:
dt nt!_PEB
dt nt!_PEB_LDR_DATA
请注意,在解析头文件之前,您需要删除早期的定义再次,这意味着您所有以前的工作都将在重新加载时丢失
,请保存您的工作
评论
谢谢你!我正在使用IDA Pro,但是在确实缺少我要查找的定义的情况下,此信息很有用。
– Elias51
2013年8月10日23:02