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通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出 ...
随机推荐
- 使用证书部署出现System.Security.Cryptography.CryptographicException 错误解决方案
一.System.Security.Cryptography.CryptographicException: 找不到对象 at System.Security.Cryptography.Cryptog ...
- 腾讯RTX登录提示失败问题及处理办法
出现问题时图片: 解决步骤: 首先ping一下RTX管理器所在的的ip地址 telnet一下服务器的端口 8000,8010 是否能通. 具体操作: 在无法登陆的客户端电脑上开始-运行-输入cmd 确 ...
- IDirect3DDevice9::Clear
在绘制每一帧图形前都要先清空视区,即清空渲染目标表面上的视区矩形的内容:颜色缓冲区.深度缓冲区或者模板缓冲区. HRESULT Clear( [in] DWORD Count, ...
- (原)python中matplotlib的颜色及线条控制
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6117528.html 参考网址: http://stackoverflow.com/questions ...
- IP地址的存储和使用
ip地址使用int类型存储,用INET_NTOA()和INET_ATON()转换 mysql'),inet_aton('127.0.0.1'); +-------------------------+ ...
- C# 汉子增加UTF-8头
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Conv ...
- Python一路走来 线程 进程
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...
- python中的super
super用于类的继承.用super()代替父类名 (一)通过类名调用父类中的方法 (二 ...
- C++中实现回调机制的几种方式(一共三种方法,另加三种)
(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型. 比如下面的示例代码,我们在Down ...
- Qt在Windows下的三种编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器 ...