OllyDbg 使用笔记 (一)
OllyDbg 使用笔记 (一)
參考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
ollydbg下载地址:http://tools.pediy.com/debuggers.htm
hello.exe下载地址:http://pan.baidu.com/s/1c0iYQOC
一、OllyDbg基本界面
图片1
假设按窗体切换button出现以下的情况,乱了,仅仅须要双击一个窗体让它全屏即可了。
图片2
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
二、部分快捷键介绍
F3 : 打开目标文件
F2 : 设置断点
F7:单步步进,遇到CALL跟进
F8:单步步过。遇到CALL路过,不跟进
F9:执行调试程序。直到执行到断点处
F4:执行调试程序,直到执行到光标处
Ctrl+F7/F8 相当于一直按F7/F8
Ctrl+F9 高速跳出函数
Alt+F9 高速跳出系统函数
Ctrl+F2 又一次加载程序
在反汇编面板中
。键:写注解
空格键:改变当前的指令
数据面板中
Ctrl+G:打开地址窗体
空格:编辑数据
三、改动hello.exe 中MessageBox的内容
此程序下载地址见 blog开头。
更改以下这个程序的标题和内容
图片3
在OllyDbg中按F3打开hello.exe
按住F8 直到弹出hello窗体
单步执行到004010E9时会停下来,弹出一个MessageBox窗体。
图片4
在这里下一个断点。
再按Ctrl+F2又一次加载。再按F9执行到断点处。
在F7步进,进入函数中。
我们能够看到
图片5
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
能够看到4个PUSH和一个CALL
四个PUSH就相当于參数。
能够看到右边的注解(OllDbg会依据dll自己主动注解),这事实上是MessageBox的4个參数。因为VC++默认函数是__stdcall 所以參数进栈的顺序是从右往左的。
我们能够看到MessageBox显示的窗体和内容的字符串的地址。
同过改动对应地址的内容就能够改变窗体的内容。
在数据面板 按下Ctrl+G s 输入 00406030
鼠标选中要改的地方,按下空格键输入要修改字符。
图片6
因为是调用MessageBoxA(A代表ASCII),所以在ASCII中输入想要字符,记得要以00结尾。
比如输入 “哈哈!。”
图片7
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
再F8 执行程序,执行到call messagebox处。就能够看到MessageBox中的hello被改成了“哈哈!!
”
这样改动在又一次加载后就会失效。
假设想保存到应用程序
选中改过的部分,右键选择拷贝到可运行程序
图片8
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在弹出的窗体中右键选择 备份-->保存数据到文件就可以
图片9
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
OllyDbg 使用笔记 (一)的更多相关文章
- OllyDbg 使用笔记 (二)
OllyDbg 使用笔记 (二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 TraceMe.exe下载地址:http://pan.baidu.com/s/1c0s2twO T ...
- OllyDbg 使用笔记 (十二)
OllyDbg 使用笔记 (十二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1eQiV6aI 安装好程序 ...
- OllyDbg 使用笔记 (七)
OllyDbg 使用笔记 (七) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载:http://pan.baidu.com/s/1gvwlS 暴力破解 观察这个程 ...
- OllyDbg使用笔记
[TOC] OD步过后,返回到之前某位置,重新单步执行 找到你想返回的行, 右键选择New origin here,快捷键Ctrl+Gray *, 然后程序会返回到这一行,再次按F7或者F8等执行即可
- OllyDbg 使用注意事项 (十)
OllyDbg 用笔记 (十) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1kT1ce83 这个程序能够从 ...
- exploit writing tutorial 阅读笔记总结
近日阅读Corelan Team编写的exploit writing tutorial系列,大致了解了一下原理,记了一些笔记.此系列文章有中文翻译版,在看雪论坛上发表. 英文版地址:https://w ...
- OD调试学习笔记7—去除未注册版软件的使用次数限制
OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需 ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- java中常用的几种缓存类型介绍
在平时的开发中会经常用到缓存,比如locache.redis等,但一直没有对缓存有过比较全面的总结.下面从什么是缓存.为什么使用缓存.缓存的分类以及对每种缓存的使用分别进行分析,从而对缓存有更深入的了 ...
- 11 JVM 垃圾回收(上)
引用计数法和可达性分析 垃圾回收,就是将已经分配出去的,但却不在使用的内存回收回来,以便再次分配.在 Java 虚拟机语境下,垃圾指的是死亡的对象所占据的堆空间.下面就总结一下如何如何辨别一个对象是否 ...
- Spring七大模块
七大模块,如下: 1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性 ...
- Android简单的BaseExpandableList使用
1.Activity package com.example.administrator.mystudent.ExpandableListView; import android.app.Expand ...
- Python脚本获取Linux系统信息
# -*- coding:utf-8 -*- import os import subprocess import re import hashlib #对字典取子集 def sub_dict(for ...
- 排列计数(permutation)
排列计数(permutation) 题目描述 求有多少种长度为n的序列A,满足以下条件: 1) 1~n这n个数在序列中各出现了一次 2) 若第i个数A[i]的值为i,则称i是稳定的.序列恰好有m个数是 ...
- Codeforces Round #364 (Div. 2) C 二分处理+求区间不同字符的个数 尺取法
C. They Are Everywhere time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- css3上下翻页效果
翻页效果显示当前时间 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- python(4)-- 日期 & 时间
1. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 2. 时间间隔是以秒为单位的浮点小数. 3. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长 ...
- js数据类型判断
在一般情况下使用typeof 但是有时候typeof返回的结果都是object,比如数组和json对象的时候,这个时候需要用到 instanceof了 还有一个更好得办法,Object.prototy ...