吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 933|回复: 0
收起左侧

[分享] 【基础TASK汇报】TASK1-2

[复制链接]
TokyoAio 发表于 2025-11-15 21:15
本帖最后由 TokyoAio 于 2025-11-17 15:44 编辑

TASK 1

0x00 学习c语言

之前按照菜鸟教程学到了指针,但是没有看懂,而且有半个多月没有编程,好多东西已经忘掉了。

但是这个不应该成为re学习的阻碍,C的学习我会在后续task中同步进行

  • 环境配置——VS Code

    • 因为重装过系统,所以重新搞了一下
      - 环境配置.png
  • 报错目前靠ai来解释,正在学习中

0x01 相识IDA

  • 这里我直接在相关论坛上找了配置好IDA的打包版,解压使用了
  • python环境
    • 打包版似乎以及集成了python,我自己又在windows中安装了一遍python,应该没问题吧
  • 基础操作
    • 目前会看反汇编代码、跳转、搜索、改名字等一些很简单很简单的操作,正在随着task的难度不断学习新知识
  • lazyida
    • 本次task可以高效提取str中的值并且转换为16进制

0x02 逆向初体验

  • 凯撒加密
    • 对文本进行固定的偏移
    • 比较简单,容易被跑字典或者频率统计这样子破解
    • 凯撒加密.png
  • 异或加密
    • a^b=c a^c=b
    • 异或脚本.png
  • flag
    • 解题思路
    • 解题思路.png
    • 借助插件
    • 插件使用.png

TASK 2

0x01 C文件的诞生

  • C文件的编译过程

    • 预编译:宏定义(替换文本)、头文件展开(把头文件内容复制进来)、处理条件编译的真假值(只保留判断为真的代码)、去除注释
    • 编译:把C代码翻译成汇编语言
    • 汇编:把汇编代码变成机器直接理解的机器码(二进制)
    • 链接:把多个.o文件和库文件组合成一个最终可执行的exe程序
  • 编译过程

    • gcc -E 001.c -o 001.i
    • gcc -S 001.c -o 001.s
    • gcc -s 001.c -o 001.o
    • gcc 001.o -o 001

0x02 PE文件结构

  • PE文件的基本结构
    • PE指纹:识别是否为PE文件的格式——特征4D 5A(MZ)和50 45(PE)
    • DOS部分:e_magic 标识PE指纹 e_lfanew 寻找PE文件头
    • PE文件头
    • PE文件头标志(PE Signature):内容固定为PE00——告诉系统,这里开始是一个PE文件结构
    • 标准PE头(Standard PE Header):只记录了文件信息(CPU类型、多少个节这些)
    • 扩展PE头(Optional Header):包含运行相关的指令(程序入口、加载的基址等)
    • 程序的真正入口点 = ImageBase + AddressOfEntryPoint
    • ImageBase:程序加载到内存的基址
    • AddressOfEntryPoint:程序入口地址
    • 节表(Section Table):说明每个节的位置、地址、属性
    • 导入表(Import Table):调用API,声明需要用到的DLL、函数
    • 导出表(Export Table):声明所提供的函数
    • Export Address Table:储存函数真实的RVA(相对地址)
    • Name Table:储存函数名
    • Ordinal Table:将名字映射到函数编号(编号再对应EAT中的函数地址)
    • 重定位表:告诉系统绝对地址,再加上偏移量
  • PE文件加载过程
    • 找到PE文件并读取DOS头
    • 读取PE头:ImageBase、SectionAlignment、SizeOfImage、AddressOfEntryPoint (OEP)
    • 分配内存:ImageBase → ImageBase + SizeOfImage
    • 如果地址已经被占用——重定位表(Relocation Table)
    • 偏移
    • 修复 IAT(导入地址表):实现调用Windows API
    • TLS 回调(存在则执行):在入口点之前
    • 跳转到入口点(Entry Point)执行:ImageBase + AddressOfEntryPoint
  • 其他
    • 偏移(Offset):相对于某个基准位置的距离
    • 虚拟地址(VA / RVA)
    • VA(Virtual Address,虚拟地址):程序在内存中的实际地址
    • RVA(Relative Virtual Address,相对虚拟地址):相对于模块基址的偏移
      • 模块基址(Image Base):PE文件加载到内存后的内存映射的起始地址
    • 相关公式:
      • FOA = RVA - Section.VirtualAddress + Section.PointerToRawData
      • RVA = FOA - Section.PointerToRawData + Section.VirtualAddress
    • PE文件并不是从第一行代码开始执行的,而是从从入口点(Entry Point)开始运行
    • 入口点通常在.text节
    • 入口点是一个RVA,需要加上基址模块才能得到VA:VA = ImageBase + RVA

0x03 Base编码

  • 编码
    • 编码是从一种固定形式转换为另一种固定形式
    • 解码就是编码的逆过程
    • 常见编码有:ASCII 编码、URL 编码、HTML 编码、Base64编码
  • 加密
    • 将明文转换成难以读取的密文,只有解密后才能拿到明文
    • 主要算法:对称加密(Symmetric encryption)和非对称加密啊(Asymmetric encryption)
    • 常见对称加密:DES、3DES、AES、RC5
    • 常见非对称加密:RSA、DSA、ECDSA、Elgamal
  • Base64编码
    • 原理:
    • 原数据转为二进制
    • 再以3字节为为一组凑成8组(24字节)(不足3字节用=填充)
    • 再以6字节为一组分为4组
    • 每6个二进制值映射一个Base64字符(000000~111111)
    • 特征:
    • 可逆
    • 只有A-Za-z0-9+/=
    • 结尾通常有“=”
    • 长度为4的倍数
    • 区别:
    • Base32:以5bit为一组划分,对应编码表
    • Base58:二进制不分组,直接转化为58进制(反复除以58取余数映射字符表)

task1.zip

38.34 KB, 下载次数: 1, 下载积分: 吾爱币 -1 CB

Task2.zip

38.98 KB, 下载次数: 1, 下载积分: 吾爱币 -1 CB

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-19 04:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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