12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 710|回复: 0

逆向基础之一

[复制链接]

345

主题

345

帖子

700

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
700
发表于 2020-2-9 05:09:58 | 显示全部楼层 |阅读模式
1.    调试器是如何实现栈回溯的?
因为函数调用指令会将函数的返回地址记录在栈上,因此可以通过从栈顶向下遍历每个栈帧来追溯函数调用的过程。
知识背景
1.源代码级调试、栈回溯、按名称显示变量等功能的实现,都离不开调试符号。
2.调试符号是在编译器在将源文件编译为可执行程序的过程中,为支持调试而摘录的调试信息。调试信息包括变量,类型,函数名,源代码行等。
3.PDB,ProgramDataBase, 微软用于描述源程序的数据库。
4.可以通过DbgHelp函数库或者DIASDK两种方式来访问调试符号文件中的符号。
5.栈帧就是利用寄存器访问栈内局部变量、参数、函数返回地址等的手段。指向每个栈帧的指针被称为帧指针。遍历整个栈中的所有栈帧,便可以得到函数调用序列。
在通过DbgHelp函数库返回地址对应的符号,便可以得到栈回溯信息。
以下是我在文件夹中找到的dbghelp.dll的身影。

X64dbg


OllyDbg

接下来是我在其它地方学习来的的代码
[C++] 纯文本查看 复制代码#include #include #include #include#include#pragma comment(lib, "dbghelp.lib")bool PrintCallStackBackTrace() {        DWORD options = SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS | SYMOPT_LOAD_LINES;        SymSetOptions(options);        CONTEXT context = { 0 };        RtlCaptureContext(&context);        STACKFRAME64 stack = { 0 };        stack.AddrPC.Offset = context.Eip;        stack.AddrPC.Mode = AddrModeFlat;        stack.AddrStack.Offset = context.Esp;        stack.AddrStack.Mode = AddrModeFlat;        stack.AddrFrame.Offset = context.Ebp;        stack.AddrFrame.Mode = AddrModeFlat;        std::vector backtrace;        std::string path =                R"(SRV*D:\symbols*https://msdl.microsoft.com/download/symbols)";        BOOL result = SymInitialize(GetCurrentProcess(), path.c_str(), TRUE);        if (!result) {                DWORD error = GetLastError();                std::cout

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-4-25 19:38 , Processed in 0.093750 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表