OllyDbg笔记-寄存器以及各种关键指令解析(含简单程序破解)
发布日期:2021-06-30 10:40:58
浏览次数:3
分类:技术文章
本文共 1033 字,大约阅读时间需要 3 分钟。
目录
基本概念
CPU中的9个寄存器:
EAX:扩展累加寄存器
EBX:扩展基址寄存器 ECX:扩展计数寄存器 EDX:扩展数据寄存器 ESI:扩展来源寄存器 EDI:扩展目标寄存器 EBP:扩展基址指针寄存器 ESP:扩展堆栈指针寄存器 EIP:扩展的指令指针寄存器
处理EBP、ESP、EIP,其他寄存器都能随意使用。
EBP:主要用于栈和栈针;
ESP:指向当前进程的栈空间地址; EIP:总是指向下一条要被执行的指明;
call有以下几种方式:
call xxxxxxxxxh #直接跳到函数或过程的地址;call xxxx #等同于 push eip;jmp xxx;call eax #函数或过程地址直接存放在eax;call dword ptr [eax] #eax中存的是地址,[]这个是取地址中的值,dword大小call dword ptr [<&API>] #执行一个系统API
下面是关于Windows操作系统相关的知识:
从内到外:
Ring 0:优先级最高,用于操作系统内核; Ring 1:不使用; Ring 2:不使用; Ring 3:最先级最低,用于应用程序;
下面是关于在条件判断跳转中关键:
代码与实例
这里破解:
这里有2个破解方法,一个是暴力破解,把if判断后的结果修改为正确。
还有一个是破解算法。
下面来演示下,首先是暴力破解:
这里有个关键,程序首先是在看有没有存在Keyfile.dat文件,如果没有,就直接跳转了
JNE是当ZF=0的时候跳转,此时把ZF改为0
往下走看到一个JNZ,现在程序给出的默认是不跳转,也就是ZF此时为0,在往下看是JMP是无条件跳转。跳到004010F7的位置,先看看这段004010F7是什么代码:
发现是给出密钥不对。此时我们让其跳转吧:
此处我们可以看到跳到一个算法里面:
这里我们分析下:这里首先是对比DS:[402173]的值是不是为10.这个目测是,通过JL可以看出小于或不大于时跳转。所以密钥估计是10位以上。然后就是读取东西。读取了后和ASCII 47也就是G做对比。如果不是G就跳转,如果是就回去在循环,所以可以知道密钥估计是>10个G(这个10是16进制的10进制为16)。这里先暴力破解下,
进行修改尝试后:
最后就来到了这个地方:
填出:
这里创建:Keyfile.dat文件,里面输入大于10个的G。看看结果:
打开程序:直接成功
转载地址:https://it1995.blog.csdn.net/article/details/103440275 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月20日 03时41分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AMM做市无常损失对冲分析系列(一)—— 损益及期权对冲模型构建
2019-04-30
JS中document对象和window对象有什么区别
2019-04-30
【python练习题】遍历1
2019-04-30
【matlab】显示图片且下方显示文字
2019-04-30
关于greater<int>以及类模板的一些理解
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
基于CentOS 7的Linux常用命令行命令
2019-04-30
行阶梯型矩阵
2019-04-30
信号量机制
2019-04-30
临界资源与临界区
2019-04-30
matlab中uint8,double,im2double和im2uint8的区别
2019-04-30
数字图像处理总复习
2019-04-30
图像去噪(包含修正的阿尔法均值滤波及通用滤波方法代码)
2019-04-30
SVM进行人脸检测
2019-04-30
C++学习笔记
2019-04-30
图像处理学习笔记
2019-04-30
Machine Learning Onramp on MATLAB 学习笔记
2019-04-30
Machine Learning with MATLAB 1.1 to 2.2
2019-04-30
Learning DSP with MATLAB
2019-04-30