Linuxword Global
当前位置: 通信协议 > 软件破解技术详解

软件破解技术详解,手把手教你如何破解软件!

在介绍PE结构后,本文将通过OD(OllyDBG)对示例程序进行逆向分析,绕过登录判定,实现破解登录的效果。本文以简单的程序为示例,其目的是方便我们直观了解破解方法及破解原理,通过由浅到深,逐步递增难度的方式,为下一步深入逆向分析打下坚实的基础。

 

1.破解示例程序介绍

本程序通过C++编写,当点击“确定”按钮时,会获取用户输入的用户名及密码进行判断,当未输入任何内容点击提交时,系统会显示“用户名与密码不能为空”。当输入用户名和密码与判断数据“test”不符时,系统会提示“用户名或密码错误”,当用户名及密码都为“test”时,则提示“登录成功”。详细代码如下图:

2020072913071017

测试示例源代码

当我们运行crackMeText.exe程序时,展现效果如下:

20200729130749897

打开效果

当我们输入内容错误(用户名及密码都不是test)时,系统提示“用户名或密码错误”。

20200729130822392

登录错误

当我们输入内容正确(用户名及密码都是test)时,系统提示“登录成功”。

20200729130901955

登录成功

以上是测试示例的简单介绍。

 

2.OD程序逆向分析介绍

我们可以打开本地的OD程序,将示例系统拖入至OD即可,效果如下图:

20200729130950147

OD主线程模块

左上为反汇编窗口,右上为寄存器窗口,左下为栈窗口,右下为数据窗口。

反汇编窗口:用户显示反汇编代码,调试分析程序主要是就是在这个窗口进行。

寄存器窗口:用户显示各个寄存器内容,包括:通用寄存器、段寄存器、标志寄存器等。

栈窗口:用户显示栈内容,即ESP寄存器指向的地址部分。

数据窗口:多种方式显示内存中的内容,可以使用Hex、文本、短型、长型、反汇编等。

由于内容较多,我们可通过搜索ASCII查看字符串进行快速定位,该操作位于插件->中文搜索引擎->搜索ASCII,具体如下图:

2020072913102636

OD搜索ASCLL

搜索完毕会,会显示中文搜索引擎内容,我们双击选择“登录成功”,如下图:

20200729131059723

双击 “登录成功”

双击后,便快速定位至“登录成功”反汇编代码段中,如下图:

20200729131132609

“登录成功”反汇编

届时,我们可以查看该区域的局部汇编代码。

 

3.OD程序动态调试分析介绍

通过静态查看反汇编代码,使我们对其内容有一定了解后,我们可以通过设置断点进行逻辑梳理。

点击指定行,“右键”->断点->切换,便可对指定行设置断点。如下图:

20200729131202906

断点设置

设置完毕后,我们点击“运行程序”,随后示例程序便会启动,我们可输入test/test123,信息进行断点调试,如下图:

20200729131233380

用户名及密码信息录入

点击“确定”按钮后,OD会锁定指定断点设置行,我们可通过“F8”进行单步调试,如下图:

20200729131303551

断点调试

上图为JNZ判断(后期我会写一篇关于逆向的基础知识),当等于0时跳转至012318D6位置。

判断不满足后,会跳入到 012318D6位置,如下图:

20200729131336919

入栈

继续按“F8”后,会进入PUSH “用户名或密码错误”行。

20200729131406879

告警内容入栈

最后执行到call代码后,我们打开测试程序时,发现弹出了“用户名或密码错误”对话框。

20200729131445805

登录错误对话框

通过设置断点后逐步调试,我们对程序执行有个更深入的了解,随后我们便可以对汇编内容进行修改。

 

4.汇编内容修改

我的绕过思路是,将if语句中最后的密码判断直接绕过(strcmp(password,"test")==0),也就是只需要用户名输入正确即可。找到该语句的对应位置后,双击指定行(00851897处),如下图:

20200729131553274

00851897原始内容

我们将该处内容修改为 je 000118CD,即若为1时,跳转至000118CD处(为登录正确内容位置)。当我们再次运行程序输入test(用户名)/123(密码)时,系统提示“登录成”。

20200729131623808

00851897内容修改

通过以上步骤,我们就可以通过修改汇编内容,绕过示例程序登录判断。该方式只是通过内存形式进行修改,并未实际修改原始示例程序,我们可通过存盘的形式进行修改。选中修改的反汇编代码行,“右键”->复制到可执行文件->选择,如下图:

20200729131650811

复制到可执行文件

随后我们会跳转至文件对话框中,如下图:

20200729131721988

文件对话框

在该页面我们,“右键”->保存文件,便可将已修改的文件另存为exe,如下图:

20200729131750113

程序保存

修改生成后的exe再运行时,便可实现上面我们修改后的效果,只需要输入正确用户名test即可(密码随便输入)。

 

5.总结

通过以上逐步讲解,相信大家已经清楚了解到如何通过OD进行逆向分析及绕过破解,以简单的示例是让大家更容易有所认识,针对复杂系统,您还需具有相对丰富的编程、汇编、工具等多方面经验。

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"软件破解技术详解"

最新评论

    暂无留言哦~~

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2343 篇
  • 草稿数目: 12 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 6116 个
  • 注册用户: 139 人
  • 访问总量: 8,649,778 次
  • 最近更新: 2024年4月28日