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通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出 ...
随机推荐
- JQ 遍历节点
.children() : 取得匹配元素的子元素集合 .next() :取得匹配元素后面紧邻的同辈元素 .prev() :取得匹配元素前面紧邻的同辈元素 .siblings() :取得匹配元素前.后的 ...
- 3月25日 javascript练习
1.找出100以内带7的数字 2.求1!+2!+3!+......+n!的和
- kettle 连接 mysql 出错 Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the ……
解决办法:1: 首先,到官网下载mysql-connector-java. 2: 把驱动文件放置在data-integration\lib\ 目录下
- Ubuntu 12.04 更新源
转载自:http://www.cnblogs.com/eastson/archive/2012/08/24/2654163.html 1.首先备份Ubuntu12.04源列表 sudo cp /etc ...
- WF学习
1.添加argument 类的argument必须先在表达式里面实例化 argument和variable 没有区别啊??????? http://msdn.microsoft.com/en-us/l ...
- 如何设置让外网通过路由器IP加端口号访问到局域网一台Web服务器
场景描述: 我们局域网内所有主机链接一台路由器,通过设置动态获取IP上网,现在想让一台主机作为Web 服务器,让外网用户通过http://ip:port的方式访问. 1:首先修改Apache的端口号: ...
- LeetCode_Minimum Path Sum
iven a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...
- protel或Altium Designer中各种栅格(grid)的意义
Snap Grid:捕获栅格.指光标移动的最小间隔.Component Grid:元件放置捕获栅格.指放置元件时,元件移动的间隔.Electrical Grid:电气栅格.电气栅格的作用是在移动或放置 ...
- 二极管IN4001~IN4007参数
电压范围50~1000V 正向导通电流1A 导通电压降:1.1V 具体见下图:
- JS打印、预览(IE,Chrome)
IE下: 调用IE内置打印组件完成web打印方案.IE调用ActiveX实现打印. 重点: 注意: 1.CSS对打印的控制: .Noprint{display:none;} .PageNext{pag ...