博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
加密解密第二章:ollydbg用法
阅读量:6830 次
发布时间:2019-06-26

本文共 1838 字,大约阅读时间需要 6 分钟。

od用法

  • 基本设置

加密解密第二章:ollydbg用法

这里是使用的吾爱破解的专用版OD,文字汉语 操作就很方便了

tips:加入到右键菜单

加密解密第二章:ollydbg用法

  • 调试文件的方式

OllyDBG 有三种方式来载入程序进行调试,一种是点击菜单 文件->打开 (快捷键是 F3)来打开一个可执行文件进行调试,

另一种是点击菜单 文件->附加 来附加到一个已运行的进程上进行调试。注意这里要附加的程序必须已运行。

第三种就是用右键菜单来载入程序(不知这种算不算)。一般情况下我们选第一种方式。比如我们选择一个 test.exe 来调试,通过菜单 文件->打开 来载入这个程序

同时我们可以使用 ollydbg -p pid的值来调试隐藏的进程

icesord 来查看进程的pid

Traceme 案列分析

使用ASCCII 码的traceme来进行调试

ctrl+g设置断点 输入GetDlgItemTextA定位到方法处 按F2下断点

加密解密第二章:ollydbg用法

跟踪代码 ,发现关键的判断点再如下方法:

加密解密第二章:ollydbg用法

方法一:修改标志位寄存器ZF的值 点击 Z取反即可

加密解密第二章:ollydbg用法

we get it

加密解密第二章:ollydbg用法

方法二:

上面那个GenRegCode的返回值存储正在eax中 如果为真及返回1,错误即返回0;

加密解密第二章:ollydbg用法

在这一句修改eax的值 即可跳转到正确的流程

方法三: NOP掉判断代码

加密解密第二章:ollydbg用法

上面这三种方式都是在内存中手动修改代码或者寄存器的值。无法实际落盘到磁盘中。下面我们尝试将第三种方法持久化。

加密解密第二章:ollydbg用法

右键选择修改过后的代码并存放到可执行后文件,最后保存文件为traceme-patch.exe

加密解密第二章:ollydbg用法

输入任何长度大于5的名称即可通过。

加密解密第二章:ollydbg用法

我们用ida打开看看代码变动的位置。

加密解密第二章:ollydbg用法

可以看到 相当于是注释掉原来的check方法。

加密解密第二章:ollydbg用法

算法分析

该注册机的算法代码

unsigned char Table[8] = {0xC,0xA,0x13,0x9,0xC,0xB,0xA,0x8};    //计算序列号要用的数据表,全局变量/*-------------------------------------------------------------*//* GenRegCode - 注册算法主函数                                *//*-------------------------------------------------------------*/BOOL GenRegCode( TCHAR  *rCode, TCHAR  *name ,int len) { int i,j;unsigned long code=0;     for(i=3,j=0;i
7) j=0; code+=((BYTE)name[i])*Table[j]; } wsprintf(name,TEXT("%ld"),code); if(lstrcmp(rCode, name)==0) //比较真假序列号,这里为了省事,直接比较了 return TRUE; else return FALSE;}

使用python写一个

z = 3j = 0code = 0table = [0xC, 0xA, 0x13, 0x9, 0xC, 0xB, 0xA, 0x8]cname = input("Enter a number: ")for i in range(z,len(cname)):    if j > 7:        j = 0    code = code + table[j] * ord(cname[i])  #注意16进制转ascci码    i=i+1    j=j+1print(code)

od断点

硬件断点

内存断点

消息断点

(windows的机制 当用户点击一个按钮,移动鼠标或者键入文字时 都会发送消息给当前的窗体 消息为四个参数 hwnd msg longA longB )

条件断点

按照寄存器的条件中断
按存储器条件中断

vs2017 编译加入调试符号

加密解密第二章:ollydbg用法

转载于:https://blog.51cto.com/10509896/2137502

你可能感兴趣的文章
tomcat支持中文文件名下载
查看>>
PHP 时区设置
查看>>
UVALive 5790 Ball Stacking 解题报告
查看>>
深入redis内部--事件处理机制
查看>>
[再寄小读者之数学篇](2014-05-23 $\ln x-ax=0$ 有两个根时的估计)
查看>>
(弃)解读Openstack Identity API v2.0
查看>>
Linux目录结构
查看>>
微信分享JS接口失效说明及解决方案
查看>>
ThinkPHP项目笔记之RBAC(权限)下篇
查看>>
log4j配置具体解释
查看>>
买低配车,更保值?!坊间有一句戏言:买车都要买低配
查看>>
数据迁移
查看>>
ubuntu14中创建python虚拟环境
查看>>
简单两步使用node发送qq邮件
查看>>
CSS
查看>>
区块链架构
查看>>
PHP Primary script unknown 终极解决方法
查看>>
3D文本悬停改变效果
查看>>
递归算法的时间复杂度
查看>>
有点不安全却又一亮的 Go unsafe.Pointer
查看>>