首页 > 其他分享 >逆向入门

逆向入门

时间:2023-10-05 22:33:58浏览次数:33  
标签:逆向 入门 文件 学习 https PE com 调试

逆向学习笔记

基本内容

1. 前置知识

  • C、 C++语言
  • x86汇编语言
  • 少量的组成原理、编译原理等方面知识
  • 少量Python类脚本语言编程
  • 部分密码算法知识
    • 熟悉Base64编码
    • 熟悉MD5,SHA1等hash算法
    • 熟悉DES、AES、RC4、TEA等分组加密算法
    • 熟悉RSA等非对称加密算法
    • 了解数字签名、SSL/TLS等密码算法的相关应用

1.1 学习内容

1.2 学习目标

  • 用C语言编写一个程序,使用openssl加密库,来对指定目录下的所有文件进行加密。
  • 《逆向工程核心原理》、《加密与解密(第四版)》相关例程都要掌握。

2. 汇编与反汇编知识

2.1 学习内容

  • 熟悉常见x86汇编指令
  • 熟悉函数调用约定
  • 熟悉函数调用栈
  • IDA工具的使用
  • IDA插件编写方法

2.2 学习目标

  1. 编程实现5个C、C++程序,包括文件操作、socket操作、进程操作、注册表操作,用IDA对程序进行反汇编处理,从反汇编代码中找出自己写的函数,理解反汇编代码指令功能(对照着c源码)。
  2. 撰写一篇关于函数调用约定和函数调用栈的笔记,能够对照反汇编实例,理解函数调用过程。

3. 可执行文件结构

3.1 PE文件结构

学习内容
  • 参考《逆向工程核心原理》关于PE文件的内容
  • 详细理解PE文件格式
  • 学习LordPE、PEStudio等PE解析器的使用方法
  • 学习ELF文件格式。ELE是Linux下的可执行文件格式,与PE类似,可参考https://blog.csdn.net/mergerly/article/details/94585901
学习目标
  1. 编写一个PE文件解析器,能够解析并输出PE文件主要内容。
  2. 编写一个ELF文件解析器,能够解析并输出ELF文件主要内容。

3.2 PE文件感染

学习内容
  • PE感染示例代码
学习目标
  1. 编写一个PE文件感染代码,通过添加节的方式,实现PE文件的感染,执行PE文件的时候,能够弹出一个计算器。

4. 调试与反调试

4.1 动态调试

学习内容
  • 学习OllyDBG调试工具的使用方法,自行百度资料
  • 学习WinDBG调试工具的使用方法,自行百度资料
学习目标
  1. 会使用OllyDBG对程序进行逆向调试,实现程序注册码破解
  2. 用OllyDBG对给定的三个PE文件进行动态调试,撰写调试分析报告

4.2 反调试方法

学习内容
学习目标
  1. 编写一个程序,使其具备反调试功能,并使用调试器检验反调试效果

5.加壳与脱壳

学习内容

  • 加壳的原理与方法
  • 脱壳的原理与方法
  • 了解虚拟机壳的原理
  • 相关内容可参考《加密与解密》

学习目标

  1. 编写一个简单的PE文件加壳工具
  2. 对5个加壳程序进行脱壳处理

6. 代码混淆与去混淆

学习内容

学习目标

  1. 编写一个自动化的代码混淆工具
  2. 对三个混淆程序进行反混淆处理

其他参考资料

其他语言逆向

Java

C#

Go

  • Go二进制文件逆向分析从基础到进阶——综述 - 安全客,安全资讯平台 (anquanke.com)

Python

Lua

Android

swf

其他资源

在线资源

  • 看雪论坛
  • 吾爱破解

CTF比赛

  • 看雪CTF,每季度一次
  • CTF等
  • 其他,几乎每周都有CTF比赛

常用工具

反汇编与反编译

  • IDA Pro(重点)
  • Ghidra
  • Jeb(安卓)

调试工具

工具 操作系统 处理器 内核 备注
OD Windows 32 不支持
x64Dbg Windows 32、64 不支持
Windbg Windows 32、64 支持
GDB Linux 32、64 支持

文件结构查看工具

文件查看工具

  • peview
  • peid
  • PEStudy
  • HackResource(PE文件资源)
  • readelf

二进制编辑工具

  • 010editor

IDA Pro

常用操作

IDAPython 脚本

插件

OD

常用操作

WinDbg

超级推荐WinDbg 10的TTD模式

配置

命令

GDB

命令

插件

  • peda
  • gef

标签:逆向,入门,文件,学习,https,PE,com,调试
From: https://www.cnblogs.com/ONEZJ/p/17744048.html

相关文章

  • 【计算几何】(还未入门的)入门题做题总结
    开篇碎碎念马上就要正式迎接新的大一生活啦,学个计算几何助助兴bushi感觉还算不上入门,但是做着玩啦还不知不觉的完成了牛客的100AC做题小总结是按照洛谷用户分享题单:计算几何——从入门到跳楼https://www.luogu.com.cn/training/16408来逐步完成的,现在已经完成基础part啦。......
  • ChatGPT入门实战课 AI时代更具竞争力的开发者(完结)
    点击下载:ChatGPT入门实战课AI时代更具竞争力的开发者(完结)提取码:bx1lFlink是一款基于流处置的散布式计算框架,能够完成高性能、低延迟的实时数据处置和剖析。下面是一个示例代码,用于展现如何运用Flink从零开端构建实时风控系统。首先,我们需求在pom.xml文件中添加Flink的依......
  • vue3最基础入门,vue3 + element plus实战pc端后台管理,从零到一设计pc端项目
    教程地址 https://www.bilibili.com/video/BV1C3411s7bV 稳定、快速、免费的前端开源项目CDN加速服务,共收录了4387个前端开源项目https://www.bootcdn.cn/all/ Normalize.css使浏览器呈现所有HTML元素更加一致,并且符合现代web标准。Normalize.css只作用于需要......
  • gin上使用Grpc入门
    要在Go中使用基于Gin的gRPC,你需要执行以下步骤:安装gRPC:使用以下命令安装gRPC:goget-ugoogle.golang.org/grpcshell复制代码安装protoc-gen-go:使用以下命令安装protoc-gen-go插件,它用于将protocolbuffer文件生成Go代码:goget-ugithub.com/golang/protobuf/protoc......
  • 前端基础入门知识
    1.windows快捷键tab+alt切换窗口一直点tab会选择切换(主要)shift+小写状态下字母= 输出大写字母win+d快速切换到windows桌面 shift+crtl切换输入法  2.浏览器快捷键1.crtl+shift+c打开开发者模式(主要)f12也可以打开2.crtl+r强制刷新3.crtl......
  • Android入门教程 | UI布局之RelativeLayout 相对布局
    RelativeLayout简述RelativeLayout继承于android.widget.ViewGroup,按照子元素之间的位置关系完成布局,作为Android系统五大布局中最灵活也是最常用的一种布局方式,非常适合于一些比较复杂的界面设计。RelativeLayout和LinearLayout类似,都是ViewGroup,能“容纳”多个子view。R......
  • 0基础入门overleaf (latex)
    首先是官方文档,可以通过官方文档进行简单了解LearnLaTeXin30minutes-Overleaf,在线LaTeX编辑器Latex是一个编码式的排版工具,一切内容均通过  LaTeX命令 实现。在开头会对文章格式等内容进行设置,\documentclass{article}  %规定了文章类型\usepackage{...} ......
  • MyBits逆向工程
    MyBits逆向工程1.什么是逆向工程:逆向工程是MyBits基于表单从而自动生成的MyBits所需要执行的sql语句的一个功能,可以生成基础的增删改查功能,增加了开发的效率。2.如何构建一个MyBits工程的环境,以及如何使用它?1.首先需要构建一个maven项目2.通过pom.xml加入MyBits常用的依赖......
  • FreeRTOS入门教程(同步与互斥)
    (文章目录)前言前几篇文章一直在围绕FreeRTOS中的任务创建,删除,优先级,调度算法进行讲解,那么从本篇文章开始将围绕同步与互斥来展开讲解。一、同步与互斥概念当多个任务或线程共享资源并发执行时,同步和互斥是两个关键的概念。1.同步(Synchronization)是指协调多个任务或线程的执......
  • 【C语言入门】第四天
    【例题1】2325.解密消息-力扣(LeetCode)intisTrue(charc,charchs[26],intpos){inti;for(i=0;i<pos;i++){if(c==chs[i]){return0;}}return1;}charlookForChar(charc,charchs[26]){for(inti=0;i<26;......