第52篇:OD使用教程2-设置API函数断点去除软件对话框及过期校验

article/2025/10/1 9:32:50

739c40bb6ed182b226c24119ac7701af.png

 Part1 前言 

大家好,我是ABC_123。之前分享过一篇Ollydbg逆向分析入门教程《第50篇:使用OD逆向破解流光Fluxay扫描器各种限制》,这篇文章主要讲解了在使用OD逆向分析时,如何按照编程人员的思维去解除软件的各种限制。方法有点麻烦,而且还有一处软件过期校验没有完美去除掉。

本期除了介绍通过段首关键call解除软件过期的方法以外,还会介绍一种通过查找API函数下断点的方法。假设软件是c++写的,程序读取文件一般就会调用到ReadFile函数,程序退出一般就会调用到ExitProcess函数,那么我们完全可以在这些函数附近下断点,快速定位到关键跳及关键call,从而解除软件限制。

 Part2 逆向分析过程 

  • 去除软件的过期校验

首先看一下流光2000的这个“软件过期”窗口,在软件运行时,有时候就会弹出来这个界面,进度条走到头软件就会自动退出。上期我们通过改关键跳和nop的方法解除限制,但是不完美,偶尔还会提示软件到期,这次我们尝试完美解除这个限制。

c2f933c43d380245fced77b2bfb7a0a4.png

首先我们用“智能搜索”插件试试查找字符串“到期”。

0c6d8ef3a7dbf22ccdc2f0221c7f47d5.png

然后把找到的结果都下断点。

4489d0bd59004b1f4ae3c21d410128c7.png

使用OD重新载入软件,很快定位到了弹出“软件过期窗口”的关键代码,但是在此代码附近反复下断点调试,各种修改关键跳,各种nop都行不通。

db64c59c3e98b5d1b66b52afa4779624.png

那接下来怎么办呢?不妨在这段汇编代码的段首处下断点,重新跟一下汇编代码。如下图所示,标红的00470810是段首位置,从这里开始分析汇编代码,我们发现了“GET / HTTP/1.1\r\n”字样,Host头被设置为www.sina.com.cn,推测作者是请求新浪网址的返回时间与系统时间来做对比进行软件过期校验的。

F8单步走执行到004708A9位置(如下图箭头所示),这里有一个关键call,执行速度非常慢,推测这是发起http请求的代码

5e20ed770d68cd070ef948bedab4c09d.png

这里遇到了最关键的代码test eax,eax,经过分析发现,call 00484100处代码逻辑是这样的,软件过期则eax寄存器等于00000000,软件不过期则eax寄存器等于00000001,因此这里是关键call的位置。

6aead030748ce992eb6c821d8ca51c1f.png

接下来怎么办呢?我直接把call 00484100对应的函数代码给改掉,直接将函数的代码改为mov eax,0x1; retn 0x8; 用retn 0x8后,该函数中后面的代码就都不执行了。

208eb283e1e7d2d69d1c64010acb397f.png

把关键call改掉之后,继续运行软件,发现流光2000的时间校验完美绕过。

eca0cd64359b01424377bc8c15cfd00e.png

  • 用户调查表断点定位

首先使用PEID查一下,发现是VC++6.0写的,因此我们可以查找VC++的对话框函数来下断点。

c63962919fe642ebcb25d3bdd2cb2db0.png

为了定位这个用户调查表,需要先讲一下有关VC++对话框的API函数基础知识。

abf621077d77485febd8bb1be272b317.png

对话框分为两类:模态对话框和非模态对话框。区别是模态对话框不允许在不同窗口之间切换,非模态对话框可以;创建模态对话框是由调用DialogBoxParam 函数实现的,创建非模态对话框是由调用CreateDialogParam函数实现。相同点是这两个函数的第一个参数都是hInstance,也就是对话框的实例句柄。

DialogBoxParam( HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);

CreateDialogParam( HINSTANCE hInstonce, LPCTSTA IpTemplateName, HWND hWndParent, OLGPAOC lpDialogFunc, LPARAM dwlniParam);

试想一下,在call一个函数前,汇编代码肯定会这样写:push 0x地址 ,意思是把0x地址的值入栈,这里0x地址对应的值就是对话框的实例句柄hInstonce的值

这时候使用工具eXeScope打开软件的主程序FluXay2.exe,挨个点击找到标题为“流光II用户调查表”对话框,记下对应的数值251,这个10进制数值就是这个对话框的实例句柄。

da93906b79b2058ce026b69d24927516.png

10进制251对应的16进制数是0Xfb,打开OD重新载入程序,查找所有命令push 0xfb下断点

9a14452d4490f1a122e62331a13d4dc0.png

经过查找发现push 0xFB 的位置在00407380,在此下断点,然后在段首00407360处也下断点。

c3086fc8edb7278e2de6ce748c007c9b.png

右键点击“反汇编窗口中跟随”,这一步是为了查找到关键call,也就是查找到哪一个call调用了此对话框

fcd5c37069f42106d25af80a0eac4ec8.png

在返回的地址附近的两个call都下上断点。

9b0604c2e62815e9fb13a956e07384f6.png

经过动态调试分析,把0043BF92处的代码给nop掉,即可去掉该软件的用户调查对话框。

a803997fda81e5eb6b7ee2e33d9f131b.png

软件打开后,不再提示用户调查对话框了。

daf4c793f81ab0ab2d415bfcb4957c51.png

 Part3 总结 

1.   当断点附近代码的关键跳、关键call都不奏效时,可以尝试从段首开始分析,把关键call改掉,这样的逆向修改一劳永逸解除限制。

2.   解除软件限制有各种方法,在不同的软件中,各有优缺点,需要灵活使用。

d30f7df5eee8e3e3e3d0be12326774b7.png

公众号专注于网络安全技术分享,包括APT事件分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。

Contact me: 0day123abc#gmail.com(replace # with @)


http://chatgpt.dhexx.cn/article/8rBaoJoP.shtml

相关文章

od的简单使用--(1)

od的简单使用——(1) 一,本教程需要的工具OllyDBG 下载: OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程…

PyCharm 社区版(Community)能不能商用?

其实官方博客已经给出了答案,截图如下: PyCharm社区版是专业版的阉割版,PYcharm专业版增加了Web开发、Python We框架、Python分析器、远程开发、支持数据库与SQL等更多高级功能。两者区分如下: 所以,大胆放心的用PyC…

Pycharm社区版下载及安装教程

下载: 下载地址:https://www.jetbrains.com/pycharm/download/#sectionwindows 安装: 打开你下载的路径,双击.exe文件,点击运行 默认点击next之后,选择路径,尽量不要选择在C盘,然后…

Pycharm社区版安装教程(永久免费,随时升级)

首先进入JetBrain的官网(国内正常访问): https://www.jetbrains.com/ 第一眼看到的界面如下图所示: 然后找到我们的Pycharm专题页: 进入Pycharm的专题页面之后,点击下载按钮(这里有两个按钮,点任何一个都行): 然后进入到真正的下载页面你会发现有两个版本的Pycharm,一个…

pycharm安装-社区版

下载地址 Download PyCharm: Python IDE for Professional Developers by JetBrains https://www.jetbrains.com/pycharm/download/#sectionwindows 下载社区版 安装过程 双击安装包 开始安装 安装过程 首次启动 双击桌面图标 选风格 深色保护视力 新建项目 新建文件

如何用Pycharm社区版连接数据库

用Pycharm社区版连接数据库 Pycharm 社区版安装过程 Pycharm 社区版 Pycharm社区版是比专业少了一些功能,直接并没有连接数据库的工具,所以需要自行下载安装。 安装过程 1.file->settings 2.在Plugins中搜索database 3.点击搜素 4.选中要下载的…

pycharm社区版安装及使用教程(win10系统)

1.下载 下载地址:https://www.jetbrains.com/pycharm/download/#sectionwindows 2.双击安装程序,直接next 3.选择安装路径(安装路径最好不要带中文和空格) 4.勾选配置,然后next 没有框起来的那一项不用勾选&#xf…

Pycharm的安装并且连接已有的Python环境实现自由编译(附中文配置)|并通过Pycharm实现增加网站访问

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝 🥇博主昵称:Jovy. 🍟博客主页…

使用Pycharm连接服务器,实现代码同步

Table of Contents 一.目标 二.本地环境 三.步骤 四.同步代码 五. 配置远程Python解释器 六. 使用远程解释器运行本地Python程序 一.目标 Pycharm软件连接服务器,同步本地代码到服务器 二.本地环境 Pycharm专业版(社区版没有该功能)…

linux下pycharm专业版和社区版的安装

一.社区版的安装 1.在官网下载pycharm的源码安装包(https://www.jetbrains.com/pycharm/) 进入官网,选择toolsx下的pycharm,再点击右上角的download,进去后选择想要的版本即可。 当然安装包也可以通过别人的分享获得&#xff0…

Pycharm社区版下载安装教程+图文教程

Pycharm下载网址:Download PyCharm: Python IDE for Professional Developers by JetBrains 下载后双击运行安装: 选择安装路径: 然后选择install安装即可 选择同意。 打开pycharm后新建项目,选择项目的路径,选择Pytho…

手把手教学安装pycharm(社区版)

1.首先我们要进入pycharm社区版的下载地址 下载:https://www.jetbrains.com/pycharm/ 官网中下载windows社区版(免费) 2.点击右边的社区版“COMMUNTY”下面的"DOWNLOAD"进行下载 3.下载完成后双击安装包进行安装 4.下一步&#…

Pycharm-community-2020.2.3 社区版安装教程

Pycharm-community-2020.2.3 社区版安装教程 1.安装 step1 step 2 首先是更改安装地址,推荐安装在D盘,如果和我一样C盘容量大的话,也可以不改,直接点击【Next】😄 step3 勾选所有即可,点击【Next】 step4…

PyCharm社区版下载和安装 2022_12_11

下载 下载地址:https://www.jetbrains.com/pycharm/download/#sectionwindows 安装 pycharm-community-2022.3.exe

pycharm 社区版2022 如何安装第三方库(Mac版 有手就行)

Hi,希望这篇文章对mac book pro新手学python,起到用途哦!!! 一.安装pycharm 打开官网下载 Download PyCharm: Python IDE for Professional Developers by JetBrains 二.安装第三方库 第一步:打开pycha…

PyCharm 2020.3.2社区版的下载安装及使用入门教程

1.从官网下载: http://www.jetbrains.com/pycharm/download/#sectionwindows 打开后如下图所示,再根据自己电脑的系统选择,我这里选择的是Windows系统下的社区版(纯Python开发,免费使用) 2.PyCharm的安装&#xff1…

PyCharm 社区版 安装 教程(Windows)

注:如果已经安装过python 3.5 及以上版本的解释执行器则跳过此步骤 下载 PyCharm 社区版 软件 PyCharm windows 版本 安装包如下:Thank you for downloading PyCharm!https://www.jetbrains.com/pycharm/download/download-thanks.html?platformwindows&codeP…

Pycharm 社区版安装

一、Pycharm介绍 二、Pycharm社区版安装 三、Pycharm使用 一、Pycharm介绍 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#x…

Pycharm直接连接Github

Pycharm直接连接Github Pycharm可以说是使用Python语言开发者的必备利器。高校学生有学生邮箱就可以免费使用,着实省了我不少银两。附个license图:Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。代码…

PyCharm社区版2021.3版本图文安装教程(简单)

1、安装包下载 Download PyCharm: Python IDE for Professional Developers by JetBrains 学生只要下载社区版本即可,专业版只能试用30天,点击黑色Download按钮即可开始下载。 2、安装 下载完成后打开安装包 双击打开后进入安装页面 3、点击Next、选择…