x32dbg/x64dbg逆向之反汇编do-while分析
x32dbg/x64dbg逆向之反汇编do-while分析1反汇编do-while分析do-while语句在开发中同样十分常见它和while区别主要先执行循环体再判断条件是否继续循环的场景。相比whiledo-while至少会先执行一次循环体因此在一些特定逻辑处理中非常实用。编译后映射到汇编代码里具体是什么样子咱们也通过x32dbg/x64dbg一步步调试也看下哦2C语言案例代码单个do-while咱们在学习逆向分析的同时同步梳理C和C基础知识点一正一反正向开发逆向分析为后续深耕底层技术打好基础哦。#define _CRT_SECURE_NO_WARNINGS#include stdio.hint main(void){int n;int i 1;int sum 0;printf(Please input an number: );scanf(%d, n);do{sum sum i;i i 1;} while (i n);printf(Sum from 1 to %d %d\n, n, sum);return 0;}4C语言案例代码多个do-while咱们在学习逆向分析的同时同步梳理C和C基础知识点一正一反正向开发逆向分析为后续深耕底层技术打好基础哦。#include stdio.hint main(){int x 1;// Single do-whiledo{printf(%d , x);x;} while (x 5);printf(\n);printf(\n);x 0;// First do-while layerdo{int y 1;printf(| );// Second do-while layerdo{int z 1;// Third do-while layerdo{printf(* );z;} while (z 3);printf(| );y;} while (y 2);printf(\n);x;} while (x 2);return 0;}5反向分析指针单个do-while之前咱们把单个while和多个while分析外以后再来看会发现底层几乎一样但是一旦嵌套多了咱们会发现不同的地方哦所以咱们以后尽量从最底层入手这样理解任何东西就相当easy哈哈哈x64Debug版本00007FF60D851930 | 40:55 | push rbp | FileName.cpp:500007FF60D851932 | 57 | push rdi |00007FF60D851933 | 48:81EC 48010000 | sub rsp,148 |00007FF60D85193A | 48:8D6C24 20 | lea rbp,qword ptr ss:[rsp20] |00007FF60D85193F | 48:8D7C24 20 | lea rdi,qword ptr ss:[rsp20] |00007FF60D851944 | B9 1A000000 | mov ecx,1A |00007FF60D851949 | B8 CCCCCCCC | mov eax,CCCCCCCC |00007FF60D85194E | F3:AB | rep stosd |00007FF60D851950 | 48:8B05 E9B60000 | mov rax,qword ptr ds:[__security_cooki | rax:__enc$textbss$end5A00007FF60D851957 | 48:33C5 | xor rax,rbp | rax:__enc$textbss$end5A00007FF60D85195A | 48:8985 18010000 | mov qword ptr ss:[rbp118],rax | rax:__enc$textbss$end5A00007FF60D851961 | 48:8D0D A0060100 | lea rcx,qword ptr ds:[__14F49BB1_FileN | FileName.cpp:1573248000007FF60D851968 | E8 3FFAFFFF | call project1.7FF60D8513AC |00007FF60D85196D | 90 | nop | 上面全是debug特有的就不多少了00007FF60D85196E | C745 24 01000000 | mov dword ptr ss:[rbp24],1 | FileName.cpp:7开始赋值变量int i 1;00007FF60D851975 | C745 44 00000000 | mov dword ptr ss:[rbp44],0 | FileName.cpp:8int sum 0;00007FF60D85197C | 48:8D0D A5930000 | lea rcx,qword ptr ds:[Please input an | FileName.cpp:10, 00007FF60D85AD28:Please input an number: print参数00007FF60D851983 | E8 D0F8FFFF | call project1.7FF60D851258 | printf00007FF60D851988 | 90 | nop |00007FF60D851989 | 48:8D55 04 | lea rdx,qword ptr ss:[rbp4] | FileName.cpp:11, rdx:__enc$textbss$end5Aint n作为scanf存储数字的变量地址第二个参数rdx00007FF60D85198D | 48:8D0D B4930000 | lea rcx,qword ptr ds:[%d...] | 00007FF60D85AD48:%d第一个参数00007FF60D851994 | E8 D3F8FFFF | call project1.7FF60D85126C | scanf00007FF60D851999 | 90 | nop |00007FF60D85199A | 8B45 24 | mov eax,dword ptr ss:[rbp24] | FileName.cpp:15获取局部变量i00007FF60D85199D | 8B4D 44 | mov ecx,dword ptr ss:[rbp44] | 获取局部变量sum00007FF60D8519A0 | 03C8 | add ecx,eax | sum sum i;00007FF60D8519A2 | 8BC1 | mov eax,ecx |00007FF60D8519A4 | 8945 44 | mov dword ptr ss:[rbp44],eax | 把结果赋值给sum00007FF60D8519A7 | 8B45 24 | mov eax,dword ptr ss:[rbp24] | FileName.cpp:16同理获取局部变量i00007FF60D8519AA | FFC0 | inc eax | i i 1;00007FF60D8519AC | 8945 24 | mov dword ptr ss:[rbp24],eax | 把结果赋值给i00007FF60D8519AF | 8B45 04 | mov eax,dword ptr ss:[rbp4] | FileName.cpp:17获取局部变量i进行比较00007FF60D8519B2 | 3945 24 | cmp dword ptr ss:[rbp24],eax | while (i n);00007FF60D8519B5 | 7E E3 | jle project1.7FF60D85199A | 如果小于等于继续执行循环语句内容00007FF60D8519B7 | 44:8B45 44 | mov r8d,dword ptr ss:[rbp44] | FileName.cpp:19获取sum00007FF60D8519BB | 8B55 04 | mov edx,dword ptr ss:[rbp4] | 获取n00007FF60D8519BE | 48:8D0D 8B930000 | lea rcx,qword ptr ds:[Sum from 1 to % | 00007FF60D85AD50:Sum from 1 to %d %d\n00007FF60D8519C5 | E8 8EF8FFFF | call project1.7FF60D851258 | printf00007FF60D8519CA | 90 | nop |00007FF60D8519CB | 33C0 | xor eax,eax | FileName.cpp:2000007FF60D8519CD | 8BF8 | mov edi,eax | FileName.cpp:2100007FF60D8519CF | 48:8D4D E0 | lea rcx,qword ptr ss:[rbp-20] |00007FF60D8519D3 | 48:8D15 26930000 | lea rdx,qword ptr ds:[7FF60D85AD00] | rdx:__enc$textbss$end5A00007FF60D8519DA | E8 8AF6FFFF | call project1.7FF60D851069 |00007FF60D8519DF | 8BC7 | mov eax,edi |00007FF60D8519E1 | 48:8B8D 18010000 | mov rcx,qword ptr ss:[rbp118] |

相关新闻

Fmpeg 6 音量调节滤镜:从「能响」到「好听」的最简实践指南

Fmpeg 6 音量调节滤镜:从「能响」到「好听」的最简实践指南

目录 一、先扔掉复杂概念:FFmpeg 滤镜 水管 阀门 二、最简单、最安全:3 种 volume 写法(FFmpeg 6 推荐) 写法 1:倍数调节(新手唯一推荐) 写法 2:dB 调节(专业音频人…

2026/10/9 5:21:33 阅读更多 →
从跳一跳连点器实践看移动端自动化与图像识别工程

从跳一跳连点器实践看移动端自动化与图像识别工程

你有没有试过,在某个看似简单的游戏里,被一个“不可能”的分数卡住,然后脑子里闪过一个念头:如果我的手速能再快一点,或者操作能再精准一点,是不是就能过了? 几年前,一款叫“跳一跳…

2026/10/5 8:34:21 阅读更多 →
SHARP框架:构建可审计、自进化的金融交易智能体规则体系

SHARP框架:构建可审计、自进化的金融交易智能体规则体系

1. 从“黑盒”到“白盒”:金融交易智能体的信任危机与SHARP的诞生在量化交易和算法交易领域,智能体(Agent)早已不是什么新鲜事物。从简单的移动平均线交叉策略,到复杂的深度强化学习模型,这些“不知疲倦”的…

2026/10/11 12:19:15 阅读更多 →

最新新闻

差分约束与SPFA最长路:从糖果题掌握建图与正环判定

差分约束与SPFA最长路:从糖果题掌握建图与正环判定

第一次做 SCOI2011 糖果这道题时,我的第一反应是这题跟“差分约束”有什么关系?n 个小朋友分糖果,无非就是比较大小、算个数,贪心排个序好像就完了。但仔细读题会发现,约束条件不是一串连续的大小关系,而是…

2026/10/12 20:05:20 阅读更多 →
PDT团队KPI指标库深度拆解:三维度19项指标与落地避坑指南

PDT团队KPI指标库深度拆解:三维度19项指标与落地避坑指南

简介:《PDT团队KPI指标库.pdf》是一份面向产品开发团队管理者、项目经理及研发人员的KPI考核体系参考资料,系统梳理了财务、客户、内部业务三大维度共二十余项关键绩效指标,并清晰界定各指标的适用范围与数据来源。资源为单个PDF文件&#xf…

2026/10/12 20:05:20 阅读更多 →
Axure 9负坐标空间全解析:从元件失踪到实战应用

Axure 9负坐标空间全解析:从元件失踪到实战应用

1. 负坐标空间到底是什么?先搞清楚 Axure 9 的画布逻辑做原型设计的人应该都遇到过这么一幕:某天打开一个同事交接的 Axure 9 文件,页面首页空空荡荡,可是右侧大纲面板里明明躺着十几个元件,选中其中一个,画…

2026/10/12 20:05:20 阅读更多 →
IPD开发阶段活动说明:从PDCP到ADCP的36个关键动作与落地指南

IPD开发阶段活动说明:从PDCP到ADCP的36个关键动作与落地指南

简介:这份PDF是一份IPD(集成产品开发)体系中开发阶段活动说明的专用资料,面向产品经理、项目经理、研发管理及职能部门负责人,用于明确项目从开发到验证、发布阶段的关键动作与角色分工。内容围绕外围组成员确定、项目…

2026/10/12 20:05:20 阅读更多 →
豆瓣电影Top250数据分析系统:Python爬虫+pandas+Flask+ECharts全流程实战

豆瓣电影Top250数据分析系统:Python爬虫+pandas+Flask+ECharts全流程实战

简介:本资源为基于Python的豆瓣电影数据分析与可视化系统完整毕业设计包,面向计算机相关专业学生及需要数据分析实战项目的开发者。项目采用Flask搭建后端、ECharts完成图表渲染,结合爬虫采集豆瓣电影数据并用pandas做清洗处理,数…

2026/10/12 20:05:20 阅读更多 →
从生产事故到审查系统:open-code-review如何让代码审查真正落地

从生产事故到审查系统:open-code-review如何让代码审查真正落地

1. 我为什么会在代码审查这件事上栽跟头——项目起点先坦白说,我并不是一开始就想搞什么代码审查工具的。真正让我下决心动手的,是某次上线事故。那是一个数据迁移项目,项目不大,三个人改了差不多两周。代码过了两轮 review&#…

2026/10/12 20:04:19 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →