惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

www.infosecurity-magazine.com
www.infosecurity-magazine.com
Security Archives - TechRepublic
Security Archives - TechRepublic
TaoSecurity Blog
TaoSecurity Blog
Cloudbric
Cloudbric
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Securelist
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
S
Schneier on Security
L
LangChain Blog
Jina AI
Jina AI
M
MIT News - Artificial intelligence
Recent Announcements
Recent Announcements
T
Tenable Blog
B
Blog RSS Feed
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
T
The Exploit Database - CXSecurity.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
W
WeLiveSecurity
I
InfoQ
The Hacker News
The Hacker News
雷峰网
雷峰网
月光博客
月光博客
P
Privacy & Cybersecurity Law Blog
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
P
Privacy International News Feed
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
V
V2EX
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cybersecurity and Infrastructure Security Agency CISA
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
Microsoft Azure Blog
Microsoft Azure Blog

卷卷

今日说法 节目汇总笔记 《斯坦福大学人生设计课》读书笔记 我的书单📖 H-worm (VBS蠕虫) 感染事件溯源分析报告 AMOS (Atomic Stealer) 恶意软件深度分析 银狐26年全面复活,对抗强度或已超25年最高水平 Atomic Stealer (AMOS) 回归:ClickFix、伪装加密货币应用与新型 macOS 持久化机制 关于xt.exe的分析报告 仿真钓鱼页面窃取用户凭证 GitHub Pages配置Cloudflare CDN踩坑之路 推荐RSS热力图和Github热力图使用指南 学习逆向工程相关概念 zabbix快速上手 学习python高级语法特性例题笔记 学习云计算基本理论学习笔记 学习Docker-Compose命令及镜像构建与推送 ATT &CK 框架实践阅读笔记 rundll32.exe恶意加载DLL文件外联 《悉达多》读书笔记 《稀缺》读书笔记 《认知觉醒》读书笔记 《营养学》读书笔记 《心理学》读书笔记 热💖生活 C++开发环境配置与程序运行笔记 逆向免杀 Admin.canway账号命名方式 BAS - Breach and Attack Simulation Windows核心系统进程链与svchost深度解析 企业测试环境的弱口令需要整改吗 AI对话笔记-模板 网络安全行业招聘需求与技术能力分析 银狐木马技术原理分析与检测技术 SIEM-安全信息和事件管理 AI笔记 转载 专业备考⏳ 其他杂项🧶 Markdown 原生图片 知道创宇技能表 Prompt越狱手册 deepseek使用指南 清华大学 deepseek提问方法 markdown基本语法 数据湖:它们是什么?为什么您的组织需要一个? GitHub Codespaces velociraptor(迅猛龙)快速上手 学习windows快捷命令 学习常用 150 个Linux命令 软考中的一些概念 学习ssh基本使用 Linux系统换源输入法和包管理器 DC-8靶机 Metasploitable3下载与安装 信息收集方法及流程 防守之道 开发运维 免责声明 密码喷射攻击:防范攻击你需要知道的事项 密码学中的哈希解释:它的工作原理、算法和实际用途 应急响应术语 各种报错积累 漏洞挖掘思路 收藏夹 RDP和360星图使用 windows入侵排查 Linux入侵排查 Redis日志分析 Linux安全加固 windows安全加固 windows日志ID速查 中间件加固 数据库安全加固 windows系统提权 MySQL注入复盘 学习git版本控制工具的概念与命令 学习Web Shell 学习Linux命令 java环境配置 学习python基础语法特性解题笔记 学习Mysql基础知识 windows权限维持 学习网络及安全的一些术语 PHP代码审计 Linux系统提权 MSSQL注入复盘 Linux权限维持 命令执行和反序列化 逻辑漏洞 upload-labs 框架漏洞 学习PHP语法特性 XXE&SSRF CSRF 文件上传 Google Hacking XSS-lab XSS实验 学习URL请求后的通信过程 FOFA
IDA Free调试Hello World笔记
卷卷 · 2025-12-26 · via 卷卷

一、C++源代码与IDA伪代码对比

1. C++源代码

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World!" << endl;

    long long a; // 声明变量a为整数类型
    std::cin >> a;
    std::cout << "You entered: " << a << std::endl;

    return 0;
}

2. IDA反汇编伪代码

int __cdecl main(int argc, const char **argv, const char **envp) 
{ 
  std::ostream *v3; // rax 
  __int64 v4; // rax 
  std::ostream *v5; // rax 
  __int64 v7; // [rsp+28h] [rbp-8h] BYREF 

  _main(argc, argv, envp); 
  v3 = (std::ostream *)std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "Hello World!"); 
  refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(v3); 
  std::istream::operator>>(refptr__ZSt3cin, &v7); 
  v4 = std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "You entered: "); 
  v5 = (std::ostream *)std::ostream::operator<<(v4, v7); 
  refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(v5); 
  return 0; 
}

3. 代码对应关系分析

C++源代码IDA伪代码说明
cout << "Hello World!" << endl;v3 = (std::ostream *)std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "Hello World!");
refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(v3);
cout对应refptr__ZSt4cout,endl对应endl函数
long long a;__int64 v7; // [rsp+28h] [rbp-8h] BYREFlong long类型在IDA中显示为__int64
std::cin >> a;std::istream::operator>>(refptr__ZSt3cin, &v7);cin对应refptr__ZSt3cin,&v7是变量a的地址
std::cout << "You entered: " << a << std::endl;v4 = std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "You entered: ");
v5 = (std::ostream *)std::ostream::operator<<(v4, v7);
refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(v5);
输出字符串和变量a的值
return 0;return 0;函数返回值

二、IDA Free下载与安装

1. 下载地址

2. 安装步骤

  1. 运行下载的安装程序
  2. 选择安装路径(默认即可)
  3. 选择组件:确保勾选"IDA Freeware"
  4. 完成安装

三、IDA Free使用步骤

1. 打开并加载程序

  1. 启动IDA Free
  2. 点击"New"或使用快捷键Ctrl+N
  3. 选择要分析的程序文件(如hello.exe)
  4. 在"Load a new file"对话框中:
    • 选择"PE file"(Windows可执行文件)
    • 保持默认加载选项
    • 点击"OK"
  5. 等待IDA完成加载和分析

2. 设置黑色主题

  1. 点击菜单栏"Options" → "Color"
  2. 在"Color"对话框中:
    • 点击"Load"
    • 选择"dark.idc"主题文件
    • 点击"Open"
  3. 点击"OK"应用黑色主题

3. 查找main函数

  1. 在IDA主界面,确保显示"Functions"窗口(如果没有,点击View → Open Subviews → Functions)
  2. 或者使用快捷键Ctrl+F打开搜索对话框
  3. 在搜索框中输入"main"
  4. 点击"OK"或按Enter
  5. IDA将定位到main函数的反汇编代码

4. 生成伪代码

  1. 在反汇编窗口中,确保光标位于main函数的代码范围内
  2. 按F5键生成伪代码
  3. IDA将打开伪代码窗口,显示C风格的反编译代码

5. 调试程序(F9)

  1. 点击菜单栏"Debugger" → "Process options"
  2. 在"Process options"对话框中:
    • 设置程序路径(默认已填)
    • 可以设置命令行参数(如果需要)
    • 点击"OK"
  3. 点击菜单栏"Debugger" → "Start process"或按F9
  4. 程序将开始运行,IDA将切换到调试视图

6. 设置断点

  1. 方法一:在反汇编或伪代码窗口中,点击要设置断点的行

    • 按F2键设置断点
    • 断点行会显示为红色
  2. 方法二:使用Alt+T搜索特定函数并设置断点

    • 按Alt+T打开"Text search"对话框
    • 输入搜索关键字,如"stdoperator>>"
    • 点击"OK"开始搜索
    • 在搜索结果中找到目标函数
    • 双击结果行定位到代码
    • 按F2设置断点

7. 调试控制

  • F9:继续运行到下一个断点
  • F8:单步执行(不进入函数)
  • F7:单步执行(进入函数)
  • Shift+F7:跳出当前函数
  • Shift+F9:暂停程序

四、IDA伪代码解读

1. 变量命名

  • IDA会自动为变量分配临时名称(如v3、v4、v5)
  • 可以手动重命名变量:右键变量名 → "Rename variable"

2. 函数调用

  • C++标准库函数在IDA中显示为mangled names(如_ZSt4cout)
  • 可以使用"Demangle"功能查看原始函数名:右键函数名 → "Demangle name"

3. 内存地址

  • 变量后面的注释显示了内存位置(如[rsp+28h] [rbp-8h])
  • BYREF表示该变量是通过引用传递的

4. 数据类型

  • long long对应__int64
  • int对应__int32
  • char对应const char

适用工具:IDA Freeware 8