加密与解密 调试篇 动态调试技术

news2024/11/17 18:26:20

OllyDbg调试器的使用

CPU窗口

 我们进行载入的时候 主要返回的是CPU窗口 是最主要的窗口 对应面板的C

 反汇编窗口

我们先查看CPU窗口 打开后是有 5个面板

 主要查看反汇编窗口

我们可以对这些列进行操作

操作都是进行双击

地址: 显示被双击行地址的相对地址 再次双击返回标准地址模式

 这里就能出现相对于双击地址的其他地址的偏移量

十六进制机器码:设置或取消无条件断点 对应快捷键是F12

 

反汇编:调用汇编器 可直接修改汇编代码 快捷键是空格

 

注释:添加注释 快捷键是;

 

从键盘选择多行 按住shift +上下键 可以实现 也可以右键快捷菜单命令实现
ctrl + 上下 可以滚动汇编(对于数据和代码混合 这个方式很有用)

信息面板

在进行动态跟踪的时候 信息面板窗口 显示指令和寄存器的值 API函数的调用提示和跳转信息

数据面板

数据面板是以十六进制和字符方式显示文件在内存中的数据

 要显示制定的内存地址数据
右键快捷键的 go to expression 或者 ctrl+G 实现

寄存器面板

寄存器面板显示CPU各个寄存器的值 支持浮点、MMX、3DNow!寄存器

可以右键或者窗口标题切换显示寄存器的方式

栈面板

显示栈的内容 就是 ESP指向地址的内容 将数据存入栈叫做入栈

从栈取出数据叫做出栈

栈窗口很重要 各个API函数和子程序都是利用它传递参数

OllyDbg的配置

 在选项界面 有两个设置 一个是界面设置 一个是调试设置

界面设置

 

 这里存放着两个路径

UDD 是 OllyDbg的工程文件 保存着当前调试的一些状态 
断点 注释等

插件是用于扩充功能 当我们把插件复制到 plugin目录中 
相对应的选项就会在 插件中显示出来

调试设置

 加载符号文件

使用lib文件(符号库) 可以让OllyDbg 以函数名字显示DLL 中的函数

在调试中 选择导入库

 基本操作

对于windows程序 只要API被调用 我们几乎就可以得到消息

所以对于一个windows程序 

选择API函数作为切入点就很重要 只要有经验 就可以很容易

这里看雪给出了一个测试软件

 通过看雪我们可以了解程序的运行

 这个就是这个程序的流程

我们进行OllyDbg调试

调试

 因为我们设置了 winmain处

所以打开程序后会得到程序执行的第一条指令处

 这里 004013A0就是这个程序的入口(EntryPoint)

 通过快捷键F7可以执行一条指令

EIP指向当前要执行的指令 然后我们进行执行 EIP就会指向下一条指令

我们可以通过对地址右键 然后选择此处为新的EIP来让程序从此处开始

单步跟踪

F7     单步步进 遇到call指令进行跟进
F8     单步步过 遇到cal指令路过 不跟进
Ctrl+F9    直到ret指令中断
ATL+F9     如果进入系统领空 此命令可以瞬间返回到程序领空
F9        运行程序
F2        设置断点

其中 F8在调试的时候很频繁

如果F8 遇到就路过这个call

F7 F8的区别就是
遇到call loop 是否跳过或者跟进

 

遇到call 就会去call 里面

call 00401DA0就是调用 这个地址的子程序
一旦子程序运行完毕 就会返回call的下一条指令 
这里就是 004013FFh 

看栈窗口就能发现 调用call 下一条指令的地址就被压入栈内

按-号可以返回上一步地址
双击EIP可以返回当前地址
如果需要重复 F8 F7 我们可以使用CTRL+F8/F7

这个快捷键会直到用户 按esc 或者 F12 或者遇到其他断点 停止
如果我们已经进入了call 指令 想返回原本调用call的地方 我们可以使用ctrl+F9

 这里进入了系统领空

 按Ctrl+F9返回程序领空 因为这里进入了 DLL地址

 

领空 就是在某一时刻CPU的 cs:EIP执行某段代码的所有者

如果我们想直接运行

 如果想重新运行

 或者 Ctrl+F12

如果程序进入死循环 F12暂停程序

设置断点

断点是调试器非常重要的部分

可以让程序中断在指定的地方

F12作为快捷键 就可以设置断点

设置断点后 通过ALT+B 或者

 可以访问断点窗口

我们可以在窗口中对断点进行操作

下面对这个程序进行完整的调试分析

先按F9 让程序运行起来

方法1 猜函数

然后我们可以猜测函数

因为我们是输入文本框里面 所以肯定会调用 读取文本框的API函数

16位:GetDlgItemText  GetWindowText
32位(ANSI):GetDlgItemTextA     GetWindowTextA
32位(Unicode):GetDlgItemTextW    GetWindowTextW

CTRL+G设置断点

注意要大小写

 

这里是系统USER32.DLL的GetDlgItemTextA函数的入口

 在此处设置一个断点

如果这个函数被调用 就会中断程序

设置了断点 我们就可以捕捉任何对此函数的调用了

输入姓名和序列号 然后check 就会在OllyDbg中中断

方法二

在反汇编中右键 打开查找当前模块的名称 或者 CTRL+N 获取 TraceMe的API函数

按 enter进入

我们继续 调试

按F8走出GetDlgItemTextA函数

这里是这个函数的参数 我们能够在反汇编里面找到 并且已经给出注释

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23种设计模式之代理模式(Proxy Pattern)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的代理模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬不…

扩展磁盘大小

此虚拟机之前硬盘大小为40G,需扩展为500G 1.虚拟机设置中,扩展硬盘大小为500G 2.启动此虚拟机,查看当前磁盘大小 3.查看磁盘情况 可查看到当前磁盘大小总共537G,实际使用37G 4.对磁盘分区 刷新分区 查看磁盘情况,可查…

目标检测数据预处理——根据部件类别按照特定位置拼图,缩小学习空间

首先放效果图,更直观看到本片是要干嘛的: 如图,就是将大图划分为44宫格的,4个部件类的目标框按照固定位置拼图,其中head、body的大图为每个宫格一张图,hand、foot的小图为每个宫格22张图(因为h…

LInux相关操作命令

目录 1、Linux用户和用户组管理 用户管理命令 系统管理 top命令 ps命令 kill命令 关机命令 重启命令 为什么学习命令 Linux刚面世是并没有图形界面,所有操作都靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限等工作中&#xff…

react-naive工作原理

react-naive工作原理是从react的工作原理衍生出来的 react的工作原理 在react中,virtual dom 就像一个中间层,介于开发者描述的视图与实际在页面上渲染的视图之间。为了在浏览器上渲染出可交互的用户界面,开发者必须操作浏览器的Dom&#x…

系统分析师经典易错题,解题思路三

UML2.0包括14种图:分别如下:类图(class diagram),类图描述了一组类、接口、协作和他们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动图的类图给出了系统的静态进程视图。对象图(object diagram)对象图描述了一组对象及它们之间…

linux centos 安装JDK、tomcat、nginx教程记录

一、安装jdk 1、查看linux系统的jdk位数(64/32位) 查看本机位数命令: sudo uname --m 2、进入jdk下载官网 Java Downloads | Oracle 现在默认是最新的jdk20 以为我是之前的项目,使用的是jdk1.8_181版本,所以我需要…

零基础自学网络安全/web安全,看这一篇就够了

作为一个安全从业人员,我自知web安全的概念太过于宽泛,我本人了解的也并不够精深,还需要继续学习。 但看到这个问题之后又想说说自己的看法,所以今天随手写写关于web安全的内容,希望对初次遇到web安全问题的同学提供帮…

Cadence+SPB16.2入门教程(上)

第1章焊盘制作 1.1用Pad Designer制作焊盘 Allegro中制作焊盘的工作叫Pad Designer,所有SMD焊盘、通孔焊盘以及过孔都用该工具来制作。 打开程序->Cadence SPB 16.2->PCB Editer utilities->Pad Designer,弹出焊盘制作的界面,如图1.1所示。 在Units下拉框中选择…

【CloudCompare教程】005:点云滤波处理大全

本文讲述基于cloudcompare软件的点云滤波方法及案例,包括:高斯滤波、低通滤波、双边滤波、统计滤波、CSF地面滤波等等。 文章目录 一、高斯滤波二、低通滤波三、双侧滤波四、统计滤波五、CSF地面滤波滤波(Wave filtering)是将信号中特定波段频率滤除的操作,是抑制和防止干…

5月22号软件资讯更新合集.....

DHorse v1.1.1 发布,基于 k8s 的发布平台 综述 DHorse 是一个简单易用、以应用为中心的云原生 DevOps 系统,具有持续集成、持续部署、微服务治理等功能,无需安装依赖 Docker、Maven、Node 等环境即可发布 Java 和 Node 应用,主要…

Telnet远程登录设备管理

Telnet远程登录原理 为了方便通过命令管理设备,可以使用Telnet协议对设备进行管理。 Telnet协议与使用Console接口管理设备不同,无需专用线缆直连设备的Console接口,只要IP地址可达、能够和设备的TCP 23端口通信即可。 支持通过Telnet协议进行管理的设备被称为Telnet服务器…

你还不知道~~这个是什么意思吗,还以为是作者写错了

文章目录 前言一、来个例子二、按位非~三、小知识 前言 主要是来学习一下js中运算符的相关的知识 一、来个例子 ~~(Math.random() * 10)看起来像是要获取随机数的。 我们先把括号内的东西粘到控制台看看: 结果: (Math.random() * 10) //4.47062635057…

面试冲冲冲

目录 一、数据库MYSQL 1.1 Oracle与Mysql的区别 1.2 Mysql索引 1.3 Mysql事务 1.4 Mysql存储引擎 1.5 B树 1.6 锁 1.7 优化 一、数据库MYSQL 1.1 Oracle与Mysql的区别 Oracle与Mysql的区别_oracle和mysql区别_顾优秀的博客-CSDN博客 浅谈MySQL和Oracle的区别_oracle…

都说聚合配送好,它到底能解决哪些同城配送难题?

自外卖经济兴起以来,即时配送一直呈现爆炸式增长。与该领域相关的商家、平台、骑手、用户数量和订单数量,也在保持着快速增长。其服务类别已从外卖扩展到人们生活的各个方面,需求增量稳步增长。 市场配送渠道虽多 配送问题仍是大难题 到目…

淘宝618活动节奏指南

一年一度的618活动又要开始啦,今天跟大家分享的是618活动时间节点,以及活动预热,活动期间,以及活动结束之后咱们应该做哪些事情。 这个是今年618活动的一个时间节点,和往年一样,主要分为预售,开…

代码随想录算法训练营day48 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III

代码随想录算法训练营day48 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III 198.打家劫舍解法一:动态规划 213.打家劫舍II解法一:分别掐头和去尾,动态规划 337.打家劫舍III解法一:树的递归遍历动态规划 总…

基于IF的网站异常流量检测

基于IF的网站异常流量检测 小P:最近渠道好多异常数据啊,有没有什么好的办法可以识别这些异常啊 小H:箱线图、 3 σ 3\sigma 3σ 都可以啊 小P:那我需要把每个特征都算一遍吗?不是数值的怎么算啊? 小H&#…

【2023年4月美赛加赛】Y题:Understanding Used Sailboat Prices 三篇完整论文及代码

【2023年4月美赛加赛】Y题:Understanding Used Sailboat Prices 建25页完整论文及代码 1 题目 2023年MCM 问题Y:理解二手帆船价格 和许多奢侈品一样,帆船的价值也会随着年代和市场条件的变化而变化。所附的“2023_MCM_Problem_Y_Boats.xlsx”文件包括2…

【dfn序+DP】树

把一棵树转化成一个序列有三种方法: dfs序 dfn序(时间戳) 欧拉序 关于这三者的区别,参考这篇博客,讲的超级好! 重谈DFS序、时间戳和欧拉序 - Seaway-Fu - 博客园 (cnblogs.com) 题意: 思路…