加密与解密笔记

第一章

常见DLL及其功能

  • 主要的三大动态链接库
  • Kernal 操作系统核心功能服务(进程与线程控制、内存管理、文件访问)
  • User 负责处理用户接口(键盘和鼠标输入、窗口和菜单管理)
  • GDI 图形设备接口
  • Other:
  • ADVAPI32.DLL 对象安全性、注册表操作
  • COMCTL32.DLL 通用控件
  • COMDLG32.DLL 公共对话框
  • SHELL32.DLL 用户界面外壳
  • DIBENG.DLL 图形引擎
  • NETAPI32.DLL 网络

常见Win32API

  • hmemcpy 数据拷贝 win9x系列使用,(已不常用)
  • GetWindowsText 标题OR控件内容
  • GetDlgItem 获取对话框句柄
  • GetDlgItemText 获取对话框文本
  • GetDlgItemInt 获取对话框并尝试转换为整数
  • MessageBox 不多说了

1.2.6

  • SendMessage
  • WM_COMMAND
  • WM_DESTROY
  • WM_GETTEXT
  • WM_QUIT
  • WM_LBUTTONDOWN

认识PE结构

  • .text 代码块
  • .rdata 运行期只读数据
  • .data 初始化的数据
  • .idata 输入表,包含其他外来DLL的函数及数据信息
  • .rsrc 包含模块的全部资源

第二章 动态分析技术

单步跟踪

  • Ctrl+F9 走到RET指令
  • Alt+F9 走到应用程序领空

消息断点

View/Windows

Q: 加密与解密上的一个同样的程序,Unicode版的程序用od消息断点断不下来,但是ASCII版的程序可以断 下来。这是为什么?
A:你可以在IsDialogMessage上面下[[ESP+8]]==(button按钮的句柄) && [[ESP+8]+4]==202
找button的句柄的方法就是刚才那个截图

条件断点

当需要CreateFile打开“ C:\1212.txt”时,断下来, 命令为

bp CreateFileA,[STRING [esp+4]]=="c:\1212.txt"]

Shift + F2 条件断点 Shift+F4 条件记录断点

第四章 逆向分析技术

启动函数

Visual C++配有C运行库的源代码,可以在crt\src\crt0.c 文件中找到启动函数的源代码。控制台程序的启动代码存放在crt\src\wincmdln.c
//开发人员可以修改启动源代码,尝试一下。
作用:检索指向新进程的命令行指针,检索指向新进程的环境变量指针,全局变量初始化,内存堆栈初始化
比如:GetCommandLineA、GetStartupInfoA、GetModuleHandleA.

函数

_cdecl 调用者平衡堆栈 //C/C++与MFC程序默认使用
stdcall 子程序平衡堆栈 //Win32 API大部分采用

c/c++名称修饰
T_T 没看懂 跳了

第五章 常见的演示版保护技术

序列号保护方式

  1. 以用户名等信息作为自变量,通过函数F变换之后得到注册码
  2. 通过注册码验证用户名的正确性
  3. 使用对等函数检查注册码
  4. 同时采用用户名和序列号作为自变量,即采用二元函数

第十章 PE文件格式

IMAGE_DOS_HEADER //MS_DOS头部
PE文件头
IMAGE_NT_SIGNATURE 0x00004550 //即PE00
IMAGE_FILE_HEADER(映像文件头)

  • +04h Machine WORD ;运行平台
  • +06h NumberOfSections WORD ; 文件的区块数目
  • +08h TimeDateStamp DWORD ;文件创建日期与时间
  • +0Ch PointerToSybolTable DWORD ; 指向符号表(用于调试)
  • +10h NumberOfSymbols DWORD ; 符号表中符号个数(用于调试)
  • +14h SizeOfOptionalHeader WORD ; IMAGE_OPTIONAL_HEADER32 结构大小
  • +16h Charcteristics WORD ; 文件属性

IMAGE_OPTIONAL_HEADER

  • +18h Magic WORD ;标志字
  • +1Ah MajorLinkerVersion































你可能感兴趣的:(加密与解密笔记)