OD调试4--去除NAG窗口
OD调试4--去除NAG窗口
nag本意是烦人的意思,nag窗口是软件设计者用来时不时提醒用户购买正版的警告窗口。软件设计者可能认为当用户忍受不了试用版中的这些烦人的窗口时,就会考虑购买正式版本。
一般nag在程序启动或退出的时候弹出来,或者在程序运行的某个时刻突然蹦出来吓你一跳。
今天的任务是用不同的几种方法来去除烦人的NAG窗口。一般情况下,一个注册后的软件,他是不会弹出NAG窗口的。所以,一般在程序启动的时候,他会有一段代码检查改程序是否已经被注册,我们可以先把这个程序的注册破解掉,NAG窗口即会自动消失。
- 试验软件:RegisterMe.exe
- 把程序跑一遍之后我们发现程序有两个NAG,一个是在程序界面启动前出现,另一个是在程序关闭后出现的。如下图
→
→
→
所有函数/过程调用之后的返回值都存放在EAX里
1字=2字节(1 word = 2 byte) 1字节=8位(1 byte =8 bit)
打开OD载入该文件,跳过第一个提示框的4种方法:
(1)je处汇编为jmp,如下
(2)选中-鼠标右键-二进制-用nop填充
(3)将push 0改为push 1(因为1是一个不存在的句柄,从而导致下面的messagebox也不存在。也就是句柄无意义,子进程就消失)
(4)修改程序入口点
点击M进入内存分布图—找到PE文件头—双击进入—找到AddressOfEntryPoint—对应内存中的地址为4000E8—回到cpu中—在数据模块中ctrl+g填入4000E8,将其本来的入口点值1000修改为1024.
回到cpu窗口中,再数据部分Ctrl+G跟随地址00400E8,如下图
对此处进行修改,00改为24.这样,程序的入口位置就由1000变为1024,就跳过了第一个NAG弹出窗口messagebox。
再处理之后的另一个NAG弹出窗口,可以使用nop汇编掉,也可以将push 0改为push 1进行修改。
PE结构:
为什么需要了解PE结构?
大家想象一下,某天在班上,我突然想知道小花同学今天穿什么颜色的裤子,要怎么办呢?点名让小花同学站起来?不行,因为老师在上课呢。那我就只好掏出班级里的座位名单,然后找到小花的名字,看是在第几行第几列就找到了,然后在看她的裤子是什么颜色,对啵?其实如果把PE结构比作我们刚才提到的班级,那么座位名单就是PE文件头啦~
- PE(PortableExecutable)可执行文件结构是一样规范,发明这个主要用来指导系统如何执行你所设计的程序。
- 编译器已经为你将代码按照PE结构的形式编译链接为可执行文件,这过程只是它默默的完成,所以我们没有察觉。但是我们现在学习的是逆向,所以连一条毛我们都不能放过。
- PE文件结构有一个非常优势的地方就是它在硬盘上的存储结构跟载入内存时候的存储结构是一样的。
- 所以,只要你了解如何在PE文件结构里边找出某样你想要的东西,那么当这个文件映射到内存后,你也可以很容易的找到它(因为OD是动态调试,程序需要先载入内存嘛)。
- 内存中的一个模块代表一个可执行文件进程所需要的所有代码、数据、资源的集合。
- PE文件结构:
- DOS header
- DOS stub
- PE File Header
- Image Optional Header
- Section Table
- Data Directories
- Sections
- 本质上,最下边的节区(有些人也叫区块)是运行一个程序真正需要的内容。
- 上边所有的“头”都仅仅是帮助Windows加载器定位和寻找下边的节区的内容。
- 在PE文件头中,这节课我们需要知道的是如何找到AddressOfEntryPoint(程序入口地址)即可。
小结:
- GetModuleHandleA这个API函数用于获取程序的ImageBase(基址)
- 这个程序的MessageBox的OwnerHandle(父窗口句柄)为0(NULL),我们可以将这个值改为一个不存在的值,例如1,这样它就找不到,就不会被显示出来。
- 名词注释:
– VA(VirtualAddress,虚拟地址)
– RVA(RelativeVirtualAddress,相对虚拟地址)
– EP(EntryPoint,程序入口点)
OD调试4--去除NAG窗口的更多相关文章
- OD 实验(四) - 去除 NAG 窗口的几种方法
程序: 运行 弹出一个窗口,说要注册 点击确定,到主窗口 关闭主窗口 然后弹出提醒注册的对话框 逆向程序 用 OD 打开程序 GetModuleHandleA 获取程序模块的句柄,程序在内存中的基址 ...
- OD调试4--绕过nag窗口
先看一下程序的运行情况 先跳出了一个nag窗口 点确定 又跳出了一个NAG窗口,这是一些程序编写的时候常用的方法,设法让你购买正版软件, 于是今天呢,学会了四种绕过NAG的方法 我们先用OD加载进入这 ...
- OD调试学习笔记7—去除未注册版软件的使用次数限制
OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需 ...
- OD调试篇7--笔记及解题报告
MFC:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows AP ...
- OD调试17
程序先出现一个nag 然后出现主窗口 然后出现第二个nag窗口 我们查个壳 没有壳 那就载入OD看看,继续用调用堆栈的方法 发现一直执行用的都是这一个call,最后执行到程序结束.之 ...
- OD调试16
今天还是15的那个程序,但是呢,换一种方法去掉NAG窗口 用OD载入,暂停,查看调用的堆栈 先看最后一个 查看调用,下断点 往上看看,找到入口的地方,设下断.点,重载,运行,单步 通过单步发现 ...
- OD调试篇12
Delphi的逆向 先看看今天需要破解的程序. 打开程序先出现了一个nag窗口,然后是unregistered未注册的提示,以及关于里的需要注册. 拖进die看了看 就是delphi写的.那 ...
- OD调试篇8
那么今天需要破解的呢,是这样一款软件. 程序刚刚进去会发现一个nag弹窗 说没有注册,要花20美金才能注册.只有5天的限制期限可以用了 进去之后 点击help里的关于这款软件 也显示了这是一个 ...
- OD调试9—实例:深入分析代码完成软件破解
OD调试9—实例:深入分析代码完成软件破解 爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出 ...
随机推荐
- 自己写的简单的jQuery分页控件
因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...
- 解决redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
执行redis 配置文件 redis-server /etc/redis/redis.conf
- Jquery 判断IE
if( $.browser.msie && ( $.browser.version == '7.0' || $.browser.version == '8.0' ) ){ alert( ...
- SPI协议总结
四种工作模式: Mode 0 CPOL=0, CPHA=0 Mode 1 CPOL=0, CPHA=1Mode 2 CPOL=1, CPHA=0 Mode 3 CPOL=1, CPHA=1 常使用Mo ...
- Java并发编程--同步容器
BlockingQueue 阻塞队列 对于阻塞队列,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤 ...
- js运算符的优先级
自上向下优先级降低 运算符 描述 . [] () 字段访问.数组下标.函数调用以及表达式分组 ++ -- - ~ ! delete new typeof void 一元运算符.返回数据类型.对象创建. ...
- IOS 解析XML文档
前段时间想找点事做,就是试着看能不能用豆瓣的API做点什么,于是就碰到了这个问题——XML解析. 老师还没讲,只能自己去查. XML文档解析主要有SAX和DOM两种模式,IOS上两种模式都可以用,这里 ...
- 解决ScrollView 与ListView共存显示不完全的问题
ScrollView与ListView共存会存在滚动的问题,并且ListView只显示一个半Item. 当ListView的高度设定一定的值时,ListView同样地会显示对应的高度的Item. 因此 ...
- Row Cache Objects
This latch comes into play when user processes are attempting to access or update the cached data di ...
- 用友U8.70安装说明
用友U8.70安装说明 U8.70安装说明一.安装前注意事项:1. 在安装U870之前,我们推荐您确保当前计算机操作系统是“干净”的,即计算机在安装过操作系统和更新过必要的系统补丁后没有安 ...