PE文件中的.text 和 .data

在 PE 文件(Portable Executable)中,.text.data 是两种常见的段(section),它们分别存储不同类型的数据。以下是它们的区别和一个具体例子:


1. .text

  • 作用:存储程序的代码部分,也就是可执行的机器指令。
  • 属性
    • 通常是 只读 的。
    • 可执行(具有执行权限)。
  • 用途
    • 包含程序的逻辑代码(函数、控制流、指令等)。
    • 这部分是加载到内存后执行的核心部分。

2. .data

  • 作用:存储程序的全局变量、静态变量等已初始化的数据。
  • 属性
    • 可读可写(通常允许修改)。
    • 不可执行(不具备执行权限)。
  • 用途
    • 包含程序运行中需要使用的已初始化数据。
    • 存储可以修改的全局变量和静态变量。

3. 关键区别

特性 .text .data
内容 机器指令(程序代码) 初始化的全局变量和静态变量
权限 只读,可执行 可读可写,不可执行
数据类型 逻辑指令或函数实现 全局变量、静态变量的值
大小 通常较小,代码段紧凑 根据全局变量和静态变量的大小决定

4. 举例说明

假设有以下 C 程序:

#include <stdio.h>

// 初始化的全局变量
int global_var = 42;

void say_hello() {
printf(“Hello, World!\n”);
}

int main() {
say_hello();
printf(“Global variable: %d\n”, global_var);
return 0;
}

PE 文件中的分布:

  • .text
    • 存储 say_hello() 函数的机器指令。
    • 存储 main() 函数的机器指令。
    • 例如:
      .text:00401000 push ebp
      .text:00401001 mov ebp, esp
      .text:00401003 call printf
  • .data
    • 存储 global_var 的值 42
    • 例如:
      .data:00402000 global_var dd 42h

5. 加载到内存后的行为

  • 当程序运行时:
    • .text 被映射为只读和可执行,CPU 直接执行这里的指令。
    • .data 被映射为可读可写,程序可以修改 global_var 的值。

6. 调试时的观察

  • 在调试工具(如 IDA Pro 或 Ghidra)中:
    • .text 显示为代码部分,包含反汇编后的指令。
    • .data 显示为数据部分,包含全局变量和静态变量的值。

通过以上描述,可以看到 .text.data 的不同在于其存储的内容和运行时的属性,它们共同组成了一个程序的核心部分。如果有进一步的疑问,可以告诉我!

发表在 安全分析 | 留下评论

IDA如何根据字符串找找对应的函数逻辑

在 IDA Pro 中,根据字符串找到对应的函数逻辑是分析程序的重要步骤,尤其是定位关键功能代码。以下是具体的方法和步骤:


1. 打开字符串窗口

  • Shift + F12,或通过菜单:
    ViewOpen subviews → Strings

    打开 Strings Window,查看程序中的所有提取字符串。


2. 定位目标字符串

  • 在字符串窗口中,按 Ctrl + F 搜索你需要的字符串内容,例如程序的日志信息、错误提示、界面文本等。
  • 双击选中的字符串,这会跳转到该字符串在内存中的位置(数据段)。

 


3. 查找字符串引用 (XREFs)

  • 在字符串对应的地址位置,右键选择 “Xrefs to” 或按快捷键 Ctrl + X
  • 这会列出所有引用到该字符串的代码地址,通常是使用这个字符串的函数或位置。

4. 跳转到调用字符串的代码

  • 双击交叉引用 (XREF) 列表中的某个地址,IDA 会跳转到该字符串被使用的具体代码位置。
  • 在汇编代码中,常见的操作是将字符串地址加载到寄存器中,然后调用函数。例如:
    mov rdi, offset aString ; 加载字符串地址到寄存器
    call printf ; 调用打印函数

    从这里可以识别出引用字符串的函数逻辑。


5. 确定包含逻辑的函数

  • 在代码引用位置,按快捷键 P 或右键选择 “Jump to function”,跳转到包含该引用的函数入口。
  • IDA 会显示该函数的完整汇编逻辑,或者如果你安装了 Hex-Rays 插件,按 F5 切换到高级语言反编译视图。


6. 分析函数逻辑

  • 检查函数中引用字符串的上下文,分析其逻辑。字符串常用于:
    • 错误信息:定位错误处理函数。
    • 日志输出:定位调试或跟踪逻辑。
    • UI 逻辑:识别用户界面处理代码。
  • 配合交叉引用 (XREF) 查看该函数是否被其他函数调用,以进一步追踪程序执行逻辑。

7. 利用调试功能

如果静态分析无法明确判断函数的用途,可以结合动态调试:

  1. 在函数入口处设置断点。
  2. 运行程序并触发相关功能。
  3. 在调试窗口中观察函数的实际执行情况。

8. 高级技巧

  • 函数重命名:在 IDA 中,可以双击函数名称或按快捷键 N,对函数进行重命名(如 handle_error()),方便后续分析。
  • 评论注释:对代码添加注释以记录逻辑(快捷键:;)。
  • 使用 FLIRT 签名识别库函数:有时字符串可能与标准库函数相关(如 printfsprintf),IDA 会自动识别它们,节省分析时间。


示例

假设字符串是 "Error: File not found",可能的调用代码如下:

mov rdi, offset aErrorFileNotFound ; 加载字符串地址
call printf ; 调用 printf 输出错误信息
  • 通过 Xrefs to 跳转到该代码后,跟踪到调用函数,例如 handle_file_error()
  • 在该函数中,你可能还会看到文件路径处理逻辑。

总结

通过字符串查找对应的函数逻辑是一个自顶向下的分析过程:

  1. 定位字符串查找交叉引用跳转函数入口分析逻辑
  2. 动态调试可以进一步验证静态分析的结果。
发表在 逆向工程 | 留下评论

remnux分析工具

 

InetSIM

INetSim是一个用于模拟常见互联网服务的软件套件,主要用于实验室环境中,例如分析未知恶意软件样本的网络行为。它的当前版本是1.3.2,发布于2020年5月19日。

在网络安全领域,INetSim常被用于建立恶意软件分析实验环境。例如,结合VirtualBox和Burp使用,可以创建一个与主机操作系统和互联网隔离的独立虚拟网络。这样的环境可以模拟HTTP或DNS等常见互联网服务,便于记录和分析任何Linux或Windows恶意软件的网络通信。这些恶意软件会在没有察觉的情况下,连接到模拟的服务器而不是真实的互联网。

 

INetSim在动态恶意软件分析工具中扮演重要角色,常与其它工具如Procmon、Process Explorer、Regshot、ApateDNS、Netcat、Wireshark等一起使用,以进行更全面的分析

 

发表在 安全分析 | 留下评论

启用WLS

步骤 1 – 启用适用于 Linux 的 Windows 子系统

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发

 

 

 

 

 

 

 

步骤 2 – 检查运行 WSL 2 的要求

若要更新到 WSL 2,需要运行 Windows 10。

  • 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。

或 Windows 11。

 

步骤 3 – 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。

 

步骤 4 – 下载 Linux 内核更新包

Linux 内核更新包会安装最新版本的 WSL 2 Linux 内核,以便在 Windows 操作系统映像中运行 WSL。 (若要运行 Microsoft Store 中的 WSL 并更频繁地推送更新,请使用 wsl.exe --install 或 wsl.exe --update。)

 

 

旧版 WSL 的手动安装步骤 | Microsoft Learn

发表在 参考资料 | 留下评论

lessmsi

 

lessmsi download | SourceForge.net

GitHub – auber-johnson/lessmsi: LessMSI

发表在 Tools | 留下评论

Win32 API 的编程参考

 

https://learn.microsoft.com/zh-cn/windows/win32/api/

发表在 参考资料 | 留下评论

Metasploit

 

https://www.metasploit.com/

发表在 Tools | 留下评论

PE-Bear

 

https://github.com/hasherezade/pe-bear/releases

发表在 Tools | 留下评论

010 Editor

010 Editor

https://www.sweetscape.com/download/010editor/

 

发表在 Tools | 留下评论

OllyDbg

 

发表在 Tools | 留下评论