Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
夜猫逐梦
MyOpen
提交
ba1b7ea3
M
MyOpen
项目概览
夜猫逐梦
/
MyOpen
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
MyOpen
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ba1b7ea3
编写于
5月 21, 2019
作者:
K
khz_df
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[内存读取] ReadProcessMemory方式及驱动方式
上级
70a69481
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
57 addition
and
6 deletion
+57
-6
course/WinDriver/tools/tools-MFC/tools-MFC.vcxproj
course/WinDriver/tools/tools-MFC/tools-MFC.vcxproj
+4
-1
course/WinDriver/tools/tools-MFC/tools-MFCDlg.cpp
course/WinDriver/tools/tools-MFC/tools-MFCDlg.cpp
+49
-5
course/WinDriver/tools/tools/tools.vcxproj
course/WinDriver/tools/tools/tools.vcxproj
+4
-0
未找到文件。
course/WinDriver/tools/tools-MFC/tools-MFC.vcxproj
浏览文件 @
ba1b7ea3
...
...
@@ -39,7 +39,7 @@
<PlatformToolset>
v141
</PlatformToolset>
<WholeProgramOptimization>
true
</WholeProgramOptimization>
<CharacterSet>
Unicode
</CharacterSet>
<UseOfMfc>
Dynam
ic
</UseOfMfc>
<UseOfMfc>
Stat
ic
</UseOfMfc>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Debug|x64'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
...
...
@@ -142,6 +142,9 @@
<IntrinsicFunctions>
true
</IntrinsicFunctions>
<SDLCheck>
true
</SDLCheck>
<PreprocessorDefinitions>
WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<AdditionalOptions>
/I"../../../../third/Blackbone/src" %(AdditionalOptions)
</AdditionalOptions>
<LanguageStandard>
stdcpplatest
</LanguageStandard>
<RuntimeLibrary>
MultiThreaded
</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>
Windows
</SubSystem>
...
...
course/WinDriver/tools/tools-MFC/tools-MFCDlg.cpp
浏览文件 @
ba1b7ea3
...
...
@@ -23,9 +23,14 @@
#include <BlackBone/Patterns/PatternSearch.h>
#include <BlackBone/Asm/LDasm.h>
#include <BlackBone/localHook/VTableHook.hpp>
#include <BlackBone/DriverControl/DriverControl.h>
// /I"../../../../third/Blackbone/src"
#ifdef _DEBUG
#pragma comment(lib, "../../../../third/Blackbone/build/Win32/Debug(XP)/BlackBone.lib")
#else
#pragma comment(lib, "../../../../third/Blackbone/build/Win32/Release(XP)/BlackBone.lib")
#endif
//////////////////////////////////////////////////////////////////////////
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
...
...
@@ -226,11 +231,12 @@ void CtoolsMFCDlg::OnBnClickedButtonRead()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData
();
m_mem_data
.
SetString
(
_T
(
""
));
CString
str_address
;
m_mem_address
.
GetWindowText
(
str_address
);
str_address
=
_T
(
"0x"
)
+
str_address
;
LONGLONG
dw
_address
=
_tcstoull_l
(
str_address
.
GetBuffer
(),
NULL
,
16
,
0
);
LONGLONG
ll
_address
=
_tcstoull_l
(
str_address
.
GetBuffer
(),
NULL
,
16
,
0
);
int
nIndex
=
m_combo_process
.
GetCurSel
();
DWORD
pid
=
m_combo_process
.
GetItemData
(
nIndex
);
...
...
@@ -248,16 +254,54 @@ void CtoolsMFCDlg::OnBnClickedButtonRead()
{
return
;
}
NTSTATUS
status
=
process
.
memory
().
Read
(
dw_address
,
m_mem_length
,
(
PVOID
)
bytes
);
if
(
!
NT_SUCCESS
(
status
))
// ReadProcessMemory方式
if
(
false
)
{
AfxMessageBox
(
_T
(
"读取进程内存失败,请检查内存地址和大小。"
));
return
;
SIZE_T
byte_read
;
BOOL
result
=
ReadProcessMemory
(
process
.
core
().
handle
(),
(
LPCVOID
)
ll_address
,
(
LPVOID
)
bytes
,
(
SIZE_T
)
m_mem_length
,
&
byte_read
);
if
(
result
==
FALSE
)
{
AfxMessageBox
(
_T
(
"读取进程内存失败,请检查内存地址和大小。"
));
return
;
}
}
// blackbone方式
else
if
(
false
)
{
NTSTATUS
status
=
process
.
memory
().
Read
(
ll_address
,
m_mem_length
,
(
PVOID
)
bytes
);
if
(
!
NT_SUCCESS
(
status
))
{
AfxMessageBox
(
_T
(
"读取进程内存失败,请检查内存地址和大小。"
));
return
;
}
}
// 驱动方式
else
{
NTSTATUS
status
=
blackbone
::
Driver
().
EnsureLoaded
();
if
(
!
NT_SUCCESS
(
status
))
{
AfxMessageBox
(
_T
(
"加载驱动失败。"
));
return
;
}
status
=
blackbone
::
Driver
().
ReadMem
(
pid
,
ll_address
,
m_mem_length
,
(
PVOID
)
bytes
);
if
(
!
NT_SUCCESS
(
status
))
{
AfxMessageBox
(
_T
(
"读取进程内存失败,请检查内存地址和大小。"
));
return
;
}
}
// m_mem_data.Format(_T("%02X %02X %02X %02X %02X %02X %02X %02X "), bytes[0], bytes[1], bytes[2], bytes[3]
// , bytes[4], bytes[5], bytes[6], bytes[7]);
std
::
string
str_mem_data
=
ToHexLines
(
bytes
,
m_mem_length
);
m_mem_data
=
CStringA
(
str_mem_data
.
data
());
if
(
bytes
)
{
delete
(
bytes
);
bytes
=
NULL
;
}
UpdateData
(
FALSE
);
}
...
...
course/WinDriver/tools/tools/tools.vcxproj
浏览文件 @
ba1b7ea3
...
...
@@ -90,6 +90,7 @@
<SDLCheck>
true
</SDLCheck>
<PreprocessorDefinitions>
WIN32;_DEBUG;TOOLS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<ConformanceMode>
true
</ConformanceMode>
<AdditionalOptions>
/I"../../../../third/Blackbone/src" %(AdditionalOptions)
</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>
Windows
</SubSystem>
...
...
@@ -120,6 +121,9 @@
<SDLCheck>
true
</SDLCheck>
<PreprocessorDefinitions>
WIN32;NDEBUG;TOOLS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<ConformanceMode>
true
</ConformanceMode>
<AdditionalOptions>
/I"../../../../third/Blackbone/src" %(AdditionalOptions)
</AdditionalOptions>
<LanguageStandard>
stdcpplatest
</LanguageStandard>
<RuntimeLibrary>
MultiThreaded
</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>
Windows
</SubSystem>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录