《加密与解密》个人阅读笔记 一

前言

导师要求寒假精读《加密与解密》,他认为这本书对我以后职业发展有帮助。那么借着寒假时间比较多,深入学习一下:)
阅读笔记与原书相比,简化了很多内容,并且加上些许个人理解。因为个人能力有限,有错误的地方还请大佬指出
在这里插入图片描述


什么是加密与解密(介绍基本概念)

  1. 对软件来说,“可执行程序->反编译->源代码”的过程就是逆向工程

批注:在我有限的ctf比赛经验中,可执行程序一般为exe,elf,apk文件,通过ida等工具反编译,但是并不会要求得出源代码

  1. 逆向工程的内容可以分为如下3类:
    • 软件使用限制的去除或者软件功能的添加 比如破解软件
    • 软件源代码的再获得
    • 硬件的复制和模拟
  2. 逆向分析技术
    • 通过软件使用说明分析软件

    没有编程经验,真分析不出来什么。。。。。。

    • 静态分析技术:指的是直接分析得到的反汇编语句,宏观地了解软件编程思路

    • 动态分析技术:静态分析可以了解各个模块的功能,但是要了解细节,只能通过动态分析。动态分析使用OllyDbg WinDbg x32Dbg x64Dbg 等等软件

文本字符

计算机存储的信息是二进制数,屏幕上显示的是二进制转化的结果。要处理文本,就要将文本转化为相应的二进制数

  • ASCII码是7位的编码标准,可以表示128个代码。不同计算机商家对ASCII码进行扩充,它们的值在127上是不统一的,如ANSI Symbol OEM等字符集。
    在线ASCII码表

  • UnicodeASCII字符编码的扩展,在Windows中,使用2字节对其编码。所有字符都是16位

字节存储顺序

字节序,表示数据在存储器中的存放顺序,区别如下:

  • Big-endian 大端法:高位字节存入低地址,低位字节存入高地址。
  • Little-endian 小端法:低位字节存入低地址,高位字节存入高地址。

例如:将12345678h写入1000h开始的内存中,两种方法结果如下
注意:78是低位字节 12是高位字节

顺序1000h1001h1002h1003h
大端法12h34h56h78h
小端法78h56h34h12h

一般来说,x86系列CPU都是 Little-endian字节序,PowerPC通常是 Big-endian字节序。因为网络协议也都是采用Big-endian方式传输数据的,所以有时也把Big-endian方式称为网络字节序。

顺便附上一段c++代码,判断机器字节序是大端还是小端

#include <iostream>
int main()
{
    int i = 1;
    if (*(char *)&i == 1)
        std::cout << "small";
    else
        std::cout << "big";
    return 0;
}

windows操作系统

作者建议阅读windows操作系统原理的知识

另外:如果要了解UNIX操作系统,可以看看这些网课:
南京大学蒋老师的操作系统课程
mit6.S081
这两个课程都只需要先修c语言,不过对编程能力要求极高

Win32 API函数

API英文全称为Application Programming Interface (应用程序编程接口)。在Windlows程序设计发展的初期,Windows程序员能够使用的编程工具只有API函数。

这些函数提供应用程序运行所需要的窗口管理、图形设备接口、内存管理等服务功能。这些功能以函数库的形式组织在一起,形成了Windows应用程序编程接口,简称“WinAPI"。WinAPI子系统负责将API调用转换成Windows操作系统的系统服务调用。所以,可以认为API函数是整个Windows框架的基石,它的下面是Windows操作系统核心,它的上面则是Windows应用程序。

Windows运转的核心为动态链接,在早期,windows主要功能只需在3个动态链接库(DLL)实现,Kernel , User ,GDI

  • Kernel 实现了操作系统的核心服务
  • User负责处理用户接口
  • GDI为图形设备接口

关于动态链接的原理以及好处,可以阅读《程序员的自我修养》一书

在Win32API函数字符集中,“A”表示ANSI,“W”表示Widechars(即Unicode)。前者就是通常使用的单字节方式;后者是宽字节方式,以便处理双字节字符

通过bing搜索win32 API,下载对应文件,就可以随时查阅winddows API

wow64

这篇文章详细介绍wow64是什么:https://blogs.msdn.microsoft.com/tianlin/2011/10/26/syswow64/
简单来说:wow64可以让32位程序在64位操作系统上运行

虚拟内存

win32的虚拟内存空间为4GB , 因为32位指针有00000000h~FFFFFFFFh的任何值。2GB内存留给操作系统自用,借助进程这一抽象概念,每个应用程序都可以得到2GB内存。

64位Windows操作系统提供了16TB的有效寻址空间,其中的一半可用于用户模式的应用程序。


本文结束

在这里插入图片描述

后记

大二上学期真挺忙的,一方面要做好网安俱乐部技术培训,一方面还要兼顾自身技术的学习。目前一边刷cs61A课程,一边学ctf逆向知识。
不过我现在已经不是俱乐部成员了,有更多时间专注于自身技术学习:)

顺便说一下,某人在俱乐部搞一言堂,非蠢即坏

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值