OD调试6—使未注册版软件的功能得以实现

本节使用的软件下载链接 (想动手试验的朋友可以下载来试试)

  继续开始我OD调试教程的学习笔记。  

  本次试验对真正的程序进行逆向。(之前的都是为破解而专门设计的小程序)

  这次试图对一个“太监版”的程序进行完整化,也就是把限制的功能恢复,把阉割的功能添加等等。用到的知识也是之前提到的,但是会有不同的地方。

  试验软件:PixtopianBook.exe(一个通讯录软件)

  打开原始程序运行,观察界面:

  这是一个通讯录软件,老外写的,很显然,当前是未注册版,试验后发现有功能限制,限制是只能有三个分组,每组不能超过4个人。也就是说,你用未注册版,联系人只能有12个人啊有木有!!太坑爹了!

  有一位伟人说过,当你在死去的时候,如果你的坟前没有200个人为你哀悼,那么你的人生就失败了。所以,为了我们的人生更加的辉煌灿烂,就一定要把这个通讯录给破解掉,多联系几个人来给自己上香啊有木有!

废话不多说,上OD开始干活。

一 异常处理

打开PixtopianBook.exe后F9直接运行,发现有异常提醒,用shift+F9忽略异常。或者如下图进行设置:

在调试选项里添加异常范围,因为是32位操作系统,所以00000000-FFFFFFFF就是整个内存段了。此时再打开程序,就没有异常出现了。

二 突破【限制人数】功能

在OD运行弹出的软件界面试图添加第5个人,出现错误提示box,如下图:

  不建议大家看到有messagebox就直接去搜索API,通过API和字符串入手,观察上下,尝试爆破。因为现在的程序设计的聪明了,使用间接地调用:先调用一个自己的进程,在进程里再调用messagebox来混淆视听,避免破解。

  正确方法:此时在od中按下暂停(暂停后od中的地址跳至动态链接库,即系统领空处),然后按ALT+F9返回到用户,在用户界面点击确定后,od中就返回到程序接管,地址跳转到下图的位置:

图中的MessageBoxA就应该是刚才的错误提示框了,F8到retn,返回到函数(函数调用之后碰到ret返回),如下图:

(相应修改在图中已标识)

注意:ret返回后,在上方又有一个call,说明在此处是间接地调用messagebox。

修改后保存。载入后已经可以突破人数添加的限制了。

二 突破【分组限制】功能

道理和突破人数限制一样,修改后如下图,可以添加无限制的分组了:

三 标题修改

接下来将几处”unregistered version”字符查找并修改

方法1:查找所有参考文本字串—查找文本”unregistered version”—跟随到代码处,找到在内存中的地址—在数据窗口中修改保存。

方法2:直接点击memory—ctrl+B查找—修改后记住字符在内存中的地址,到cpu的数据窗口保存。【建议用这种方法】

注意:修改时记得【保持大小】,不然会出错。

修改之后的图片如下:

到此完成了试验,主要的两个功能模块(人数添加和分组添加)得到了实现。

四 关于SEH

  SEH(Structured Exception Handling),即结构化异常处理。

  SEH是Windows操作系统提供的功能,跟开发工具无关。

  Windows程序设计中最重要的理念就是消息传递,事件驱动。当GUI应用程序触发一个消息时,系统将把该消息放入消息队列,然后去查找并调用窗体的消息处理函数(CALLBACK),传递的参数当然就是这个消息。

  我们同样可以把异常也当作是一种消息,应用程序发生异常时就触发了该消息并告知系统。系统接收后同样会找它的“回调函数”,也就是我们的异常处理例程。

  当然,如果我们在程序中没有做异常处理的话,系统也不会置之不理,它将弹出我们常见的应用程序错误框,然后结束该程序。所以,当我们改变思维方式,以CALLBACK 的思想来看待 SEH,SEH 将不再神秘。

OD调试6—使未注册版软件的功能得以实现的更多相关文章

  1. OD调试学习笔记7—去除未注册版软件的使用次数限制

    OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需 ...

  2. 解决WindowsServer 2008 R2 未注册版一个小时自动强制关机

    仅用来学习交流,请大家购买正版,尊重正版版权. 安装了win2008R2,试了很多激活方法,终于激活后,不知道什么原因,过了一段时间后,每隔一段时间就自动关机,查了一下,发现是 wlms.exe在作祟 ...

  3. OD调试9—实例:深入分析代码完成软件破解

    OD调试9—实例:深入分析代码完成软件破解  爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出 ...

  4. OD调试篇3-小软件破解1

    OD调试篇3-小软件破解1 要求如下图该软件需要改5个地方,其中1.2是软件未注册而设定限定的添加个数,3.4.5是软件显示的一些未注册的信息. 一. 1.按1运行程序,添加用户添加第五个时出现提示, ...

  5. Uninstall Tool 3.3.2.5315 简体中文注册版(彻底卸载软件)

    Uninstall Tool Uninstall Tool是CrystalIdea Software出品的一款强大而灵活的Windows标准“添加/删除程序”工具的替代软件.它能快速,安全而方便的删除 ...

  6. OD调试篇6--对一些真正的小程序进行一点点的修改

    先打开这个程序看看,提醒你这是一个未注册版本的软件.会发现只能添加4个联系人,这显然是我不想看见的,于是我要对这个程序进行一些修改,嘿嘿... 通过OD载入这个程序 有一些(SEH)也就是异常,我们可 ...

  7. OD调试4--去除NAG窗口

    OD调试4--去除NAG窗口 nag本意是烦人的意思,nag窗口是软件设计者用来时不时提醒用户购买正版的警告窗口.软件设计者可能认为当用户忍受不了试用版中的这些烦人的窗口时,就会考虑购买正式版本. 一 ...

  8. 逆向---03.mov、test等汇编指令、EAX、关键Call、OD调试技巧

    上一篇:逆向---02.je & jmp & jnz .OD调试 基础知识:(栗子中也会说的)栗子:链接: https://pan.baidu.com/s/1qZbbTvQ 密码: i ...

  9. OD调试篇8

    那么今天需要破解的呢,是这样一款软件. 程序刚刚进去会发现一个nag弹窗   说没有注册,要花20美金才能注册.只有5天的限制期限可以用了 进去之后 点击help里的关于这款软件   也显示了这是一个 ...

随机推荐

  1. javascript:Array.slice.call 到Array.prototype.slice.call

    举个从对象到数组的例子: var obj={}; obj[1]=1; obj[2]=2; obj.length=2; var arr =Array.prototype.slice.call(obj); ...

  2. 使用CSS3+jquery.js 实现微信抽奖转盘效果

    上次发表了一篇 微信抽奖转盘活动-效果源码分析 最近想起了刚接到这个项目时第一时间脑海里迸出的解决方法 “CSS3”! 为什么不能用CSS3来实现呢? 所以我打算用CSS3来实现这个效果.并不需要依赖 ...

  3. jQuery中对未来的元素绑定事件

    对未来的元素绑定事件不能用bind, 1.可以用live代替,但是要注意jquery的版本,根据官方文档,从1.7开始就不推荐live和delegate了,1.9里就去掉live了. 2.推荐用on代 ...

  4. Vi命令详解

    Vi有三种模式,分别为命令行模式.一般模式和编辑模式.在命令行输入“Vi 文件名”,即可进入Vi.常用命令如下:一.一般模式翻页[Ctrl]+[f]: 向下翻一页,相当于[Page Down]按键.[ ...

  5. ATM Solved Problem code: HS08TES

    # ATM import sys withdraw, balance = map(float, sys.stdin.readline().strip().split()) # strip()用法去除结 ...

  6. 1. Server.Transfer跳转页面抛出异常:正在终止线程

    今天在向数据库插入数据,之后使用Server.Transfer跳回本页面时,抛出异常:正在终止线程 ry { == String.Compare(Password.Text.Trim(), Confi ...

  7. jQuery Mobile 网格

    在列容器中,根据不同的列数,子元素可设置类 ui-block-a|b|c|d|e.这些列将依次并排浮动. 网格中的列是等宽的(总宽是 100%),无边框.背景.外边距或内边距. 例: 对于 ui-gr ...

  8. Spring boot构建基于rest的Web服务

    一.介绍:使用Spring Boot我们可以很容易的创建一个可独立运行的Rest web服务,其中内嵌tomact,我们只需“run”就可以查看效果了. Spring Boot利用Gradle或Mav ...

  9. WPF异常“调用线程无法访问此对象,因为另一个线程拥有该对象 ”

    WPF中在对界面进行操作的时候,可能会遇到"调用线程无法访问此对象,因为另一个线程拥有该对象"异常,这是因为WPF中只有UI线程才能操作UI元素,非UI线程要访问UI时就会报异常了 ...

  10. iOS开发中的Html解析方法

    iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...