• 逆向学习之路 -- 《加密与解密》读书笔记 -- 基础知识笔记


    逆向工程(Reverse Engineering)

    是指根据已有的产物和结果,通过分析来推导出具体的实现方法。对于软件来说,“可执行程序-->反编译-->源代码”的过程就是逆向工程。

    • 永远保持好奇心崇尚自由——既能促使探索,也能抵抗商业利益和欲望的侵袭。
    • 勤奋与毅力。“让我们搞清楚作为一名逆向工作者需要具备的基本条件,其实那并不是扎实的汇编功底和编程基础——可以完全不懂这些,秘诀就是勤奋加上执着!记住并做到这两点,你一样可以变得优秀。”
    • 精通至少一门编程语言——不仅是代码,更重要的是编程思想
    • 扎实的汇编功底和系统编程知识

    你想工程应该是一门优雅的艺术,而不是一些低层次者手中粗陋的工具;逆向工程的目的是学习与再利用;逆向工程的精神是“Freedom

    逆向分析技术

    1. 通过软件使用说明和操作格式分析软件

    2. 静态分析技术(静态分析工具IDA)

    3. 动态分析技术(OllyDbg或WinDbg)

    粗跟踪: 是指在跟踪时要大块大块地跟踪。也就是说,在遇到调用指令(CALL)、重复操作指令(REP),循坏操作指令(LOOP)等时一般不要跟踪,而要根据执行结果分析该段程序的功能。

    文本字符计算机存储的信息都是用二进制数表示的,屏幕上显示的字符都是二进制数转换之后的记过。如果要处理文本,就必须先把文本转换为相应的二进制数。

    ASCII 美国信息交换标准码 (American Standard Code for Information Interchange) 

    现代的ASCII是一个7位的编码标准,编码的取值范围实际上是00h~7Fh,包括26个小写字母、26个大写字母、10个数字、32个符号、33个控制代码及空格,共128个代码。(不同的计算机厂商对ASCII进行了扩充,增加了128个附加字符,它们的值在127以上的部分是不统一的,取值范围变成了00h~0FFh)

    Unicode 是ASCII字符编码的一个扩展,在Windows中用2字节对其进行编码,被称为宽字符集(Widechars)。Unicode是第一种双字节编码机制字符集,使用0~65535的双字节无符号整数对每个字符进行编码。在Unicode中,所有字符都是16位,其中所有7位ASCII码都被扩充为16位(高位扩充的是零)

    endian 字节序   表示数据在存储器中存放的顺序

    Big-endian: 大端序; 高危字节存入低地址,地位字节存入高地址。  # 相当于升序?

    Little-endian:小段序;低位字节存入低地址,高位字节存入高地址。 # 相当于降序?

     Win32 API 函数

    用16位Windows的API(Windows1.0~Windows3.1)称作“Win16”,用于32位Windows的API(Windows9x/NT/2000/XP/7/10)称作"Win32”。64位Windows API的名称和功能没有变化还是使用的Win32函数名,只不过是用64位代码实现的。

    API 应用程序编程接口(Application Programming Interface)

    动态链接库(DLL)

    # 早期Windows的主要部分只需要在3个动态链接库中实现

    Kernel(由KERNEL32.DLL):操作系统核心功能服务,包括进程与线程控制、内存管理、文件访问等。

    User(由USER32.DLL):负责处理用户接口,包括键盘和鼠标输入、窗口和菜单管理等。

    GDI(由GDI32.DLL):图形设备接口,允许程序在品目和打印机上显示文本和图形。

    --------------------------------------------------------------------------------

    ADVAPI32.DLL  对象安全性、注册表操作

    COMCTL32.DLL 通用控件

    COMDLG32.DLL 公共对话框

    SHELL32.DLL 用户界面外壳

    NETAPI32.DLL 网络

    # 虽然WinAPI 是基于C语言的接口,但是WinAPI中的函数可以由不同的语言编写的程序调用,因此,我们只要在调用时遵循调用的规范即可。

    WOW64 (Windows-on-Windows 64-bit) 是64位windows操作系统的子系统,可以使大多数32位应用程序在不进行修改的情况下运行64位操作系统上

    Windows 消息机制

    Windows是一个消息(Message)驱动式系统。

    虚拟内存 

     Windows是一个分时的多任务操作系统

    虚拟内存的实现方法和过程: 

  • 相关阅读:
    (五)Oracle学习笔记—— 视图
    (四)Oracle学习笔记—— 常见函数
    (三)Oracle学习笔记—— sql语句
    (二)Oracle学习笔记—— 序列
    mybatis部分版本异常invalid comparison: java.util.Date and java.lang.String
    spring 配置多数据源 (案例)
    spring 配置多数据源 (可行)
    使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法
    Java三大器之过滤器(Filter)的工作原理和代码演示
    Java三大器之监听器(Listener)的工作原理和代码演示
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/13599896.html
Copyright © 2020-2023  润新知