Win32 FS:[0xXX]信息
来源:互联网 发布:watershed算法原理 编辑:程序博客网 时间:2024/06/05 19:07
备忘录–2017-07-24
我正在一个其他进程的虚拟空间中:
0、我应该怎么往这个空间中写数据呢?
1、我应该怎么定位这个空间中与当前进程的相关信息呢?
2、我应该怎么定位我写入的数据呢?以下内容并不能完全解决所有问题…
FS:[0xXX]:这是维基百科的一些说明
//可以如下使用void main(){ DWORD i = 0; __asm { mov eax, fs:[0x20] mov i, eax } printf("%d", i);}
PEB(不用点我,没有连接):翻译称进程环境块,看看官网提供的阉割版,看看它实际的样子,具体有什么用,不明,但是也可以从一些字段猜测。今次只是临时保存,还未经测试。测试后补充。
微软阉割版PEB结构体:毕竟是不开源的系统。
PEB结构体导出分享:这是外国朋友收集到的WIN32平台下各个版本的PEB结构说明,无注释。网页版详细,同样是无注释的。
#pragma pack(push)#pragma pack(1)template <class T>struct LIST_ENTRY_T{ T Flink; T Blink;};template <class T>struct UNICODE_STRING_T{ union { struct { WORD Length; WORD MaximumLength; }; T dummy; }; T _Buffer;};template <class T, class NGF, int A>struct _PEB_T{ union { struct { BYTE InheritedAddressSpace; BYTE ReadImageFileExecOptions; BYTE BeingDebugged; BYTE _SYSTEM_DEPENDENT_01; }; T dummy01; }; T Mutant; T ImageBaseAddress; T Ldr; T ProcessParameters; T SubSystemData; T ProcessHeap; T FastPebLock; T _SYSTEM_DEPENDENT_02; T _SYSTEM_DEPENDENT_03; T _SYSTEM_DEPENDENT_04; union { T KernelCallbackTable; T UserSharedInfoPtr; }; DWORD SystemReserved; DWORD _SYSTEM_DEPENDENT_05; T _SYSTEM_DEPENDENT_06; T TlsExpansionCounter; T TlsBitmap; DWORD TlsBitmapBits[2]; T ReadOnlySharedMemoryBase; T _SYSTEM_DEPENDENT_07; T ReadOnlyStaticServerData; T AnsiCodePageData; T OemCodePageData; T UnicodeCaseTableData; DWORD NumberOfProcessors; union { DWORD NtGlobalFlag; NGF dummy02; }; LARGE_INTEGER CriticalSectionTimeout; T HeapSegmentReserve; T HeapSegmentCommit; T HeapDeCommitTotalFreeThreshold; T HeapDeCommitFreeBlockThreshold; DWORD NumberOfHeaps; DWORD MaximumNumberOfHeaps; T ProcessHeaps; T GdiSharedHandleTable; T ProcessStarterHelper; T GdiDCAttributeList; T LoaderLock; DWORD OSMajorVersion; DWORD OSMinorVersion; WORD OSBuildNumber; WORD OSCSDVersion; DWORD OSPlatformId; DWORD ImageSubsystem; DWORD ImageSubsystemMajorVersion; T ImageSubsystemMinorVersion; union { T ImageProcessAffinityMask; T ActiveProcessAffinityMask; }; T GdiHandleBuffer[A]; T PostProcessInitRoutine; T TlsExpansionBitmap; DWORD TlsExpansionBitmapBits[32]; T SessionId; ULARGE_INTEGER AppCompatFlags; ULARGE_INTEGER AppCompatFlagsUser; T pShimData; T AppCompatInfo; UNICODE_STRING_T<T> CSDVersion; T ActivationContextData; T ProcessAssemblyStorageMap; T SystemDefaultActivationContextData; T SystemAssemblyStorageMap; T MinimumStackCommit;};typedef _PEB_T<DWORD, DWORD64, 34> PEB32;typedef _PEB_T<DWORD64, DWORD, 30> PEB64;#pragma pack(pop)
ReactOS:百度百科说明。这是一个克隆winnt的开源操作系统。
ReactOS文档:此处定位到peb__teb.h,可以从此处查看到一些源码信息。
PEB之转存工具:我这下载时显示404,但是作者的说明可以加深理解。
PEB之读取指定进程的环境变量字符串数据:我下下来用了,比如我当前的谷歌浏览器是读不,OD读不了,但是自己写的小程序,execel.exe是可以读的。也许可以提供思路。但是好像有个小问题,它使它读过的进程线程暂停了。
非PEB的一些笔记:涵盖的内容挺多。
PEB一个实际应用:读2.ntdll. 读3kernel32。
2017-7-29:在内存中不使用API而通过PEB遍历模块列表##下载链接
#region---------流程描述//说明 :// 1、不展开时为了取得结构体申明的名称,展开为了后续写汇编代码时好处理偏移// 2、注意字符串是wchar_t类型的,不是char类型//汇编:void main(){ __asm //只索引主模块,如果要查找其他模块可以进行遍历 { mov eax, fs:[0x30] //PEB mov eax, [eax + 0x0c] //_PEB_LDR_DATA mov eax, [eax + 0x0c] //InLoadOrderModuleList起点 mov ecx, [eax] //跳过第1个模块。我的系统是win10,到这里就到了test_.exe mov ecx, [ecx] //跳过第2个模块。我的系统是win10,到这里就到了ntdll.dll mov ecx, [ecx] //跳过第3个模块。我的系统是win10,到这里就到了kernel32.dll #region //以下应当使用循环,可遍历出所有dll信息 mov ebx, [eax + 0x18] //DllBase mov ebx, [eax + 0x28] //FullDllName :完整路径 mov ebx, [eax + 0x30] //BaseDllName :文件名 #endregion //循环遍历可以使用多种方式,例如DllBase=0,或者使用do{}while(主模块地址!=InLoadOrderLinks[0])等; }}#endregion
阅读全文
0 0
- Win32 FS:[0xXX]信息
- FS信息交互
- FS:0与FS:[0]
- FS:0与FS:[0]
- 戏说fs和fs:0
- 《FS-2成员统计信息》
- HDFS 的Java操作“ Wrong FS: hdfs://xxx, expected: file:///”
- Win32下FS寄存器、TEB和PEB详解
- FS
- fs
- fs
- fs
- fs
- fs
- fs
- FS
- ”无法启动程序“..\proj.win32\Debug.win32\xxx.dll
- 无法启动程序..\proj.win32\Debug.win32\xxx.dll
- SteamVR和OpenVR异同
- page,pageContext,config和exception
- Bionic 学习
- mysql 日期和时间格式转换实现语句
- MarkDown如何更改图片大小?
- Win32 FS:[0xXX]信息
- hdoj1202_The calculation of GPA
- DOM扩展的两个常用方法
- 初识MVP,简单Demo
- 人生思考--碌碌无为的一天
- A链接的使用以及移动开发兼容
- HDU 1896 Stones
- Python采集代理ip并判断是否可用和定时更新
- How to use a man page Faster than a Google search