资源简介
VC++写的韩服辅助源码,非常值得新人参考学习
代码片段和文件信息
// CallTracer.cpp: implementation of the CCallTracer class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “CallTracer.h“
#include
#include
#pragma comment(lib “dbghelp“)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
DWORD CCallTracer::m_dwSymClients = 0;
CCallTracer::CCallTracer()
{
m_dwSymClients++;
if(m_dwSymClients <= 1)
InitSymbols();
m_dwOptions = CALLTRACE_OPT_INFO_MODULE_FUNC | CALLTRACE_OPT_INFO_MODULE_SYMBOL;
}
CCallTracer::~CCallTracer()
{
m_dwSymClients--;
if(m_dwSymClients <= 0)
FreeSymbols();
}
HRESULT CCallTracer::InitSymbols()
{
BOOL bRet = TRUE;
DWORD dwOptions = SymGetOptions();
SymSetOptions(dwOptions | SYMOPT_LOAD_LINES
| SYMOPT_DEFERRED_LOADS
| SYMOPT_OMAP_FIND_NEAREST);
bRet = SymInitialize(GetCurrentProcess()
NULL
TRUE);
return bRet ? S_OK : E_FAIL;
}
HRESULT CCallTracer::FreeSymbols()
{
BOOL bRet = TRUE;
bRet = SymCleanup(GetCurrentProcess());
return bRet ? S_OK : E_FAIL;
}
HRESULT CCallTracer::WalkStack(PFN_SHOWframe pfnShowframe
PVOID pParam int nMaxframes
PCONTEXT pContext)
{
HRESULT hr = S_OK;
STACKframe64 frame;
int nCount = 0;
TCHAR szPath[MAX_PATH];
DWORD dwTimeMS;
dwTimeMS = GetTickCount();
assert(pContext != NULL);
m_Context = *pContext;
memset(&frame 0x0 sizeof(frame));
frame.AddrPC.Offset = m_Context.Eip;
frame.AddrPC.Mode = AddrModeFlat;
frame.Addrframe.Offset = m_Context.Ebp;
frame.Addrframe.Mode = AddrModeFlat;
frame.AddrStack.Offset = m_Context.Esp;
frame.AddrStack.Mode = AddrModeFlat;
while(nCount < nMaxframes) {
nCount++;
if(!StackWalk64(IMAGE_FILE_MACHINE_I386
GetCurrentProcess() GetCurrentThread()
&frame &m_Context
NULL
SymFunctionTableAccess64
SymGetModulebase64 NULL)) {
// Error occured.
break;
}
Showframe(&frame pfnShowframe pParam);
if(frame.Addrframe.Offset == 0 || frame.AddrReturn.Offset == 0) {
// End of stack.
break;
}
}
// Summary
if(m_dwOptions & CALLTRACE_OPT_INFO_SUMMARY) {
_stprintf(szPath _T(“Total frames: %d; Spend %d MS“)
nCount GetTickCount() - dwTimeMS);
pfnShowframe(szPath pParam);
}
// Show symbol search path at last
if(m_dwOptions & CALLTRACE_OPT_INFO_SEARCHPATH) {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
....... 221 2015-06-04 19:53 JL_Hanfu\clean project.bat
....... 8334 2015-06-04 19:53 JL_Hanfu\common\CallTracer.cpp
....... 1890 2015-06-04 19:53 JL_Hanfu\common\CallTracer.h
....... 4744 2015-06-04 19:53 JL_Hanfu\common\CHook.cpp
....... 961 2015-06-04 19:53 JL_Hanfu\common\CHook.h
....... 1196 2015-06-04 19:53 JL_Hanfu\common\common.h
....... 6591 2015-06-04 19:53 JL_Hanfu\common\HookSystemcallx86tox64.cpp
....... 1057 2015-06-04 19:53 JL_Hanfu\common\HookSystemcallx86tox64.h
....... 5051 2015-06-04 19:53 JL_Hanfu\common\Inject.cpp
....... 395 2015-06-04 19:53 JL_Hanfu\common\Inject.h
....... 6273 2015-06-04 19:53 JL_Hanfu\common\Inlinehook.cpp
....... 1150 2015-06-04 19:53 JL_Hanfu\common\Inlinehook.h
....... 7596 2015-06-04 19:53 JL_Hanfu\common\Job.cpp
....... 2335 2015-06-04 19:53 JL_Hanfu\common\Job.h
....... 25022 2015-06-04 19:53 JL_Hanfu\common\LDasm.cpp
....... 743 2015-06-04 19:53 JL_Hanfu\common\LDasm.h
....... 644 2015-06-04 19:53 JL_Hanfu\common\Lock.h
....... 1143 2015-06-04 19:53 JL_Hanfu\common\Logger.cpp
....... 467 2015-06-04 19:53 JL_Hanfu\common\Logger.h
....... 10671 2015-06-04 19:53 JL_Hanfu\common\MSJEXHND.cpp
....... 1169 2015-06-04 19:53 JL_Hanfu\common\MSJEXHND.h
....... 140 2015-06-04 19:53 JL_Hanfu\common\protocol.cpp
....... 3012 2015-06-04 19:53 JL_Hanfu\common\protocol.h
....... 8442 2015-06-04 19:53 JL_Hanfu\common\RemoteLoadDll.cpp
....... 716 2015-06-04 19:53 JL_Hanfu\common\RemoteLoadDll.h
....... 2483 2015-06-04 19:53 JL_Hanfu\common\ThreadPool.cpp
....... 1266 2015-06-04 19:53 JL_Hanfu\common\ThreadPool.h
....... 8138 2015-06-04 19:53 JL_Hanfu\common\Toolhelp.h
....... 7236 2015-06-04 19:53 JL_Hanfu\common\TrayIcon.cpp
....... 1977 2015-06-04 19:53 JL_Hanfu\common\TrayIcon.h
............此处省略254个文件信息
相关资源
- 数字图像处理扑克牌识别程序
- BC45,BC++ 4.5 开发工具
- C++ 数据结构书籍 - 清华大学 - 邓俊辉
- C++AMP.pdf
- C++ Primer 第五版 中文版+英文版 pdf
- Visual C++音频视频处理技术及工程实践
- VC++各版本合集2005-2017
- 数字图像处理与机器视觉——Visual
- QT5.9_c++开发指南——随书[源码]
- C++数据结构原理与经典问题求解源代
- 数据结构与程序设计C++描述(Kruse著)
- 网络调试助手C++源码(VS 2008开发)
- 基于c++的科大讯飞源码
- MFC 官方API文档 MSDN原版
- c++编写的smtp和pop3服务器实现
- C++实现的改进遗传算法
- VS打开VC6.0所需libcd.lib
- C++ 日程管理软件 课程设计
- c++可视化学生选课系统
- Microsoft Visual C++ 2005 SP1 Redistributable
- c++ 数据结构 哈夫曼压缩&解压软件 控
- 基于Qt的智能停车场.rar
- 小型公司工资管理系统设计.rar
- 基于TCP协议的C/S传输文件C++)
- C++MFC数据库职工信息管理系统,实现
- C++ Concurrency in Action 2nd Edition (2019.
- MFC画圆自定义|位置|半径|边界和内部
- Microsoft Visual C++ 2010 SP1 Redistributable
- funcode 黄金矿工 c++语言
- QT实现视音频实时传输qml+C++
评论
共有 条评论