Welcome My Friend

加密与解密学习

Crack工具

Ollydbg

快捷键

  • F7-单步调试,如果遇到函数调用,会进入函数主体。shift+F7-单步调试,但是遇到中断,调试器会尝试进入被调试程序指定的异常处理。Ctrl+F7-自动步入,断点,异常会停下来,ESC可退出
  • F8-单步调试,遇到调用会一次执行完这个函数,shift和Ctrl和F7一样
  • F4-运行到选定位置,也就是运行到光标所在的位置。
  • Ctrl+F9-运行到return返回。
  • Alt+F9-执行到用户代码,也就是程序领空。
  • F9-让程序继续执行,shift和Ctrl和F7一样,alt+F9-执行直到返回用户代码段
  • Ctrl+F11-Run跟踪步入
  • F12 - 停止程序执行,同时暂停被调试程序的所有线程。
  • Ctrl+F12 - Run跟踪步过,一条一条执行命令,但是不进入子函数调用,并把寄存器的信息加入到Run跟踪的存储数据中。Run跟踪不会同步更新CPU窗口。
  • Alt+B - 显示断点窗口。在这个窗口中,可以编辑、删除、或跟进到断点处。
  • Alt+C - 显示CPU窗口。
  • Alt+E - 显示模块列表[list of modules]。
  • Alt+K - 显示调用栈[Call stack]窗口。
  • Alt+L - 显示日志窗口。
  • Alt+M - 显示内存窗口。
  • Alt+O - 显示选项对话框[Options dialog]
  • Ctrl+P - 显示补丁窗口。
  • Ctrl+T - 打开Run跟踪 对话框
  • Alt+X - 关闭 OllyDbg。
  • Ctrl+E -以二进制(十六进制)格式编辑所选内容。
  • Ctrl+F -开始命令搜索。
  • Ctrl+G -转到某地址。
  • Ctrl+K - 查看与当前函数相关的调用树[Call tree]。在用这个功能之前,必须使用分析代码功能。
  • Ctrl+L - 搜索下一个,重复上一次的搜索内容。
  • Ctrl+N - 打开当前模块的名称(标签)列表。
  • Ctrl+O - 扫描object文件。扫描Object文件。该命令会显示扫描Object文件对话框,您可以在该对话框中选择Object文件或者lib文件,并扫描这个文件,试图找到在实际代码段中用到的目标模块。
  • Ctrl+S -命令搜索。
  • 分号是注释

IDA

  • 快捷键
    • j(jump)表示跳转
    • o(offset)便是偏移值
    • p(procedure)表示子程序,回车或双击可跳
    • 字符上按X可以打开交叉参考窗口
    • M键为重命名,alt+M标记当前位置,Ctrl+M跳到标记位置,选择要跳的位置双击就过去了
    • U让所有代码以数据的形式显示出来,C重新分析代码
    • F12会出现函数执行的流程图 ,按空格可以相互之间转化
    • Alt+T查找字符串
    • XREF:交叉引用
    • 碰到地址的时候右键选择H,就会显示在这个栈帧中实际的位置,十六进制的,双击变量,变量会调到详细的视图
  • 图形视图
    • 蓝色,顺序执行
    • 绿色,条件执行(YES)
    • 红色,条件执行(NO)
  • 文本视图
    • 箭头实线表示非条件跳转,虚线表示条件跳转
    • 向下箭头加上jump表示跳转
  • IDC作为IDA的一个重要组成,是一种嵌入式语言,一些反汇编的任务需要IDC的协助,如对代码进行加密程序,可以用IDC先写一段解密代码,在解密后反汇编就可以得到正确的反汇编结果
  • IDA另一个重要特征是库文件的快速识别与鉴定。
  • 四种区段:
    • .text:代码段
    • .data:数据段
    • .rdata:只读数据段
    • .bss:未初始化数据段

这里给出一个比较好的学习网址:https://blog.csdn.net/fishmai/article/details/52398376

汇编相关

寄存器

  • EBP是存取某个时刻的栈顶指针,ESP是一直指向栈顶的指针,以方便对栈的操作

汇编指令

  • sete指令,cmp eax,ecx sete cl,如果eax=ecx,那么cl为1,否则为0 ,最清楚的解释是,sete指令是当zf=1时,将cl置1,否则置0
  • movzx,高位全用0填充
  • movsx,32位,低16位的第一位为1则高16位全用1填充,为0则用0填充
  • JBE,前者小于等于后者跳转

杂项知识点

  • PE—Portable Executable可执行文件
  • 很多工具在反汇编的时候可能无法正确区分数据和代码,有些程序就是用这个来对抗静态反汇编

-------------本文结束-------------

文章作者: Summary
文章链接: http://noblestaspiration.net/2018/03/30/加密与解密/
版权声明:博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议,转载请注明出处!

想要分我一杯羹吗