- 博客(28)
- 资源 (7)
- 收藏
- 关注
原创 Windows::ServicingAPI::CCDF
Windows::ServicingAPI::CCDFWindows::ServicingAPI::CCDF 有四个字段: 第一、三字段是虚函数地址; 构造对象时,第二、四字段赋 0。//----- (101E4CDD) --------------------------------------------------------_DWORD *__thiscall Windows::Aut
2016-10-28 20:23:21 386
原创 GetManifestId
GetManifestId//----- (000000018004AA80) ----------------------------------------------------__int64 __fastcall GetManifestId(__int64 a1, Windows::COM *a2, __int64 *a3){ v3 = a3; v4 = a2; v5 = a1
2016-10-27 23:11:01 438
原创 路径转入
字符串转入//----- (000000018019C55C) ----------------------------------------------------__int64 __fastcall Windows::COM::ConvertIn(Windows::COM *this, const unsigned __int16 *a2, struct _LUNICODE_STRING *
2016-10-26 22:13:32 312
原创 在栈和堆分配内存
在栈和堆分配内存LUNICODE_STRING Src ;LUNICODE_STRING *Dst1 = new LUNICODE_STRING();LUNICODE_STRING Dst2;RtlInitLUnicodeString(&Dst2, L"");RtlInitLUnicodeString(&Src, L"microsoft-windows-ie-windows-internet
2016-10-26 21:49:42 460
原创 类 IRtlFile 函数的调用
类 IRtlFile 函数的调用typedef interface II1 II1;interface II1{public: virtual HRESULT STDMETHODCALLTYPE GetI1() = 0;};typedef interface IRtlFile IRtlFile;interface IRtlFile{public: virtual HRESU
2016-10-25 22:32:27 248
原创 IRtlFile 就是 CFile 的接口
IRtlFile 就是 CFile 的接口在许多时候就是通用的。 第一个函数中的 a2 就是 IRtlFile 类型,到第二个函数中的 this,就变成 了 CFile 类型。//----- (0000000180082BC4) ----------------------------------------------------__int64 __fastcall Windows::Rtl:
2016-10-25 22:05:24 258
原创 解析 IRtlFile
解析 IRtlFile要使用对象,需要创建实例,即 NewInstance.Allocate(),大体有三步:1、分配空间2、构造对象3、初始化一、实例化//----- (0000000180067820) ----------------------------------------------------__int64 __fastcall Windows::Rtl::CRtlRef
2016-10-24 21:55:35 690
原创 RtlWcpDllDebugEntrypoint
RtlWcpDllDebugEntrypoint调试入口。//----- (10121A70) --------------------------------------------------------int __stdcall RtlWcpDllDebugEntrypoint(int a1, int a2){ struct Windows::Rtl::IRtlSystemIsolati
2016-10-23 22:59:58 290
原创 处理 ProductKey 的函数在 TransmogProvider 中
处理 ProductKey 的函数在 TransmogProvider 中//----- (0000000180015758) ----------------------------------------------------signed __int64 __fastcall CTransmogManager::InitializeProductKey(CTransmogManager *t
2016-10-22 21:50:47 592
原创 解读 GetDllVersionString
解读 GetDllVersionString获得 wcp.dll 版本号10.0.10240.16565第一个参数是 BOOL 值,不知道是干什么用的,0,1 都不影响结果。 第二个是输出参数,类型为 LUNICODE_STRING。//----- (101EB707) --------------------------------------------------------int __
2016-10-22 20:58:27 577
原创 解读 TransformKeyPermissions
解读 TransformKeyPermissions准确的功能不是很清楚,从名字来看,应该是把输入的权限值,经过某种变换后,再输出。如果版本不是大于 7 或大于 6.1,就不进行变换; 否则,如果权限值小于 256,就加上 256,大于 256,不变换。0x114 = 276 0x110 = 272 0x100 = 256VersionInformation 是结构体 _OSVERSIONIN
2016-10-22 19:26:48 400
原创 解读 RtlGetVersion
解读 RtlGetVersion获得系统版本号。NTSTATUS RtlGetVersion(OSVERSIONINFOW &VersionInformation){ UINT_PTR pfn = CalcFunctionAddress(phWCP, pfb_RtlGetVersion); typedef signed int(__stdcall * fnRtlGetVersion)
2016-10-22 19:05:14 2765 2
原创 解读 RtlConvertNtFilePathToWin32FilePath
解读 RtlConvertNtFilePathToWin32FilePath与解读 RtlConvertWin32FilePathToNtFilePath相反。转换 NtFilePath到 Win32FilePath。a1 是输入,a2 是输出。类型都是 LUNICODE_STRING。UINT_PTR RtlConvertNtFilePathToWin32FilePath( LUNI
2016-10-21 22:23:00 485
原创 解读 GetCurrentTransaction
解读 GetCurrentTransaction每一个从接口派生的类,+0 的值即接口中定义的虚函数的地址表的地址;可能在类的其他位置还有另外的虚函数的地址表。是不是就能这样确定的说,那也还看更多的构造函数。从 IRtlSystemIsolationLayer 中找一个最简单的函数GetCurrentTransaction,解读一下:Windows::Rtl::SystemImplementat
2016-10-20 22:30:40 1140
原创 解读 AcquireTxnFunctions
解读 AcquireTxnFunctions返回两个函数的地址:g_pfnGetCurrentTransactiong_pfnSetCurrentTransaction和这些地址是否存在的标志:g_fTxnFunctionsAcquired在 TxCaptureAndRelease::Set 中调用。这两个函数来自 ntdll.dll,是干什么的呢?RtlGetCurrentTransa
2016-10-19 20:58:11 464
原创 解读 RtlGetSystem
解读 RtlGetSystema2 = 0 时,调用出错: 0x5D5D573E (wcp.dll)处(位于 CallWCP.exe 中)引发的异常: 0xC0000005: 读取位置 0xCCCCCCCC 时发生访问冲突。0x5D5D573E 的值: Windows::Rtl::SystemImplementation::CreateFilesystemProviderStack( un
2016-10-16 22:18:42 550
原创 RtlGetSystem
RtlGetSystem//----- (100F1410) --------------------------------------------------------int __fastcall RtlGetSystem(unsigned __int32 a1, struct Windows::WCP::Rtl::_RTL_TRACING_FACILITY *a2, int *a3){
2016-10-16 22:17:02 309
原创 RtlConvertWin32FilePathToNtFilePath
RtlConvertWin32FilePathToNtFilePath转换 Win32FilePath 到 NtFilePath。a1 是输入,a2 是输出。类型都是 LUNICODE_STRING。最后,Windows::Auto<_LUTF8_STRING>::~Auto<_LUTF8_STRING>(&v22),并不说明字符串的类型是 _LUTF8_STRING。那么什么是 Win32
2016-10-15 20:39:19 546
原创 g_pIMalloc 全局变量
g_pIMalloc 全局变量int Set_g_pIMalloc(){ cout << endl; cout << "设置 g_pIMalloc" << endl; ppMalloc = (LPMALLOC*)CalcFunctionAddress(phWCP, pfb_g_pIMalloc); // IMalloc **ppMalloc = NULL; //
2016-10-11 21:28:01 476
原创 RemoveTrailingSlash 只修改长度信息
RemoveTrailingSlash 只修改长度信息_LUNICODE_STRING s;WCHAR* t = NULL;// 初始化 LUnicodeStringRtlInitLUnicodeString(&s, L"C:\\aaa\\bbbb\\\\\\");// 去掉字符串结尾的斜杠// 但是,它只改变字符串的长度信息,并不修改真正的字符串内容// 长度从 0x1c 变成了 0x
2016-10-11 21:23:34 482
原创 ConvertLUnicodeStringToNullTerminatedString
ConvertLUnicodeStringToNullTerminatedString//----- (00000001800B5360) ----------------------------------------------------__int64 __fastcall `anonymous namespace'::ConvertLUnicodeStringToNullTerminate
2016-10-11 21:22:11 386
原创 CoTaskMemAlloc
CoTaskMemAlloc//----- (1011EF30) --------------------------------------------------------void *__stdcall Windows::COM::CoTaskMemAlloc(Windows::COM *this, unsigned __int32 a2){ void *result; // eax@
2016-10-09 21:49:29 704
原创 CoGetMalloc
CoGetMallocIMalloc *g_pIMalloc = NULL;CoGetMalloc(1, &g_pIMalloc);0 0x75145430 CMalloc_QueryInterface(IMalloc *, const _GUID &, void * *)1 0x7505b710 CGIPTable::AddRef(void)2 0x7505b710 3
2016-10-09 21:45:22 638
原创 ConvertLUnicodeStringToNullTerminatedString
ConvertLUnicodeStringToNullTerminatedString//----- (10121EB8) --------------------------------------------------------signed int __thiscall `anonymous namespace'::ConvertLUnicodeStringToNullTerminated
2016-10-09 20:51:24 463
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人