课上实验-小软件破解

二进制代码分析报告(好水的一个破解)

  第一步,language.exe检测出程序加壳,经过Aspack加壳。

  第二步,AspackDie.exe脱壳

  第三步,language.exe检测脱壳后的程序,发现该程序是使用Delphi编写的。

  第四步,将脱壳程序拉入IDA,通过ViewsàStrings查看字符串信息,发现“注册码错误”字符串,定位到代码处。如下图:

  在0x004ACAD7处有两个分支,经观察0x004ACADD的分支为注册成功的分支,0x004ACC3D的分支为注册失败的分支。因此,为了注册成功,我将0x004ACAD7处的jnz改为jz,这样随便输入注册信息后,将跳转到0x004ACADD分支,即注册成功。对jnz的修改可以利用Ollydbg进行修改。效果如图:

然而,当我关闭程序重新打开时,提示页仍然存在,程序仍是未注册状态(如下图),我意识到在程序启动时还有验证注册信息的代码段。

利用IDA和OllyDbg,我从程序的入口点开始分析。

程序首先利用GetPrivateProfileStringA从user.dat中取出用户注册的信息,包括用户名和序列号。如下图:

接下来,对用户的注册信息进行了分析,这些分析过程就应该是验证注册信息是否正确的,从而根据判断结果来确定是否注册。

从IDA的反汇编窗口来看,总共有三处地方对注册信息进行了验证。如下图:

前两处:

第三处:

在利用OllyDbg进行调试的时候,发现前两次判断都能通过,在进行第三步判断时,没能通过。因此,我将0x004AD5C5处的jnz改为了jz,这样,成功通过三次判断,因此注册验证通过,将不会显示提示页面,同时注册成功。

效果如图:

附:

我也尝试着去找到真正的注册码,并且成功找到,过程如下。

从图中,左分支为注册成功的分支,右分支为注册失败的分支。注册成功与否关键看0x004ACAD2处 call sub_404b04的返回值,我断定这个函数应该是验证注册成功的关键函数。如果sub_4-4b04返回非零,则注册码错误。在IDA中分析sub_404b04函数,发现该函数接受了两个参数,分别是eax和edx(Delphi的传参规则是前三个参数依次传入eax, edx, ecx寄存器)。在sub_404b04中首先比较了两个参数是否相同,如果不相同,直接返回第一个参数(也就是非0),所以首先应该保证的是这两个参数相同。

     在OllyDbg中,我在此函数下断点,并尝试输入注册信息,点击注册按钮时,触发断点。这个时候,观察eax和edx,我发现edx为我输入的注册码,而eax为带比较的参数,因此,我可以断定正确的注册码就是eax所指向的内容。如下图:

因此,用户名为”wah”的正确注册码是”2EA4B10”。经过验证确实正确,如图:

时间: 2024-10-09 08:01:08

课上实验-小软件破解的相关文章

mapreduce课上实验

今天我们课上做了一个关于数据清洗的实验,具体实验内容如下: 1.数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中: 2.数据处理: ·统计最受欢迎的视频/文章的Top10访问次数 (video/article) ·按照地市统计最受欢迎的Top10课程 (ip) ·按照流量统计最受欢迎的Top10课程 (traffic) 3.数据可视化:将统计结果倒入MySql数据库中,通过图形化展示的方式展现出来. 本次主要是因为自己尚未掌握Hive的操作,之后得以请教本宿舍的大佬将hive 配

史上最简单的软件破解——5行脚本代码完美破解99%的过期软件

如果你看到了这篇博文,绝对保证不虚此行.仅仅5行脚本代码,即可破解99%的过期软件. 这件事的背景:最近在找了一些学习资料,其中有Rational Rose画的图,好久没用过它了.今天安装好,导入许可文件,结果问题出现了,提示没有激活.怎么回事??仔细一看,原来许可文件到2013年12月份就过期了(乌鸦飘过...) 在网上找了半天也没有找到一个新的许可文件,结果一狠心,手动改了一下日期,再启动,ok了,把时间再改回来.本来事儿到这儿就完了.但是结果光今天一天就手动改了好几次系统时间,这就太让人无

# 20155337 2017-2018 1 课上测试、课下作业、实验

20155337 2017-2018 1 课上测试.课下作业.实验 第一周 学习总结 第二周 课堂实践 第三周 学习总结 第四周 学习总结+myod 第五周 学习总结 课堂实践 第六周 学习总结 实验一 第七周 学习总结 实验二 第八周 加分项目pwd 第九周 学习总结 第十周 实验三 第十一周 学习总结

软件破解技术初探

MarkdowPad 2是Windows下的一款基于.Net的离线Markdown编辑器,普通版功能受限,专业版需要购买序列号.网上意外看到一篇文章,说的是用工具破解MarkdownPad,感觉比较有趣,就做了学习和尝试(后面简称为"原文"). 文章链接在此 http://www.zan3.com/zan492.html 用ILSpy查看C#源码 可以使用ILSpy直接将基于.NET的EXE文件反编译成源代码进行查看(语言可以选择 C# / VB / IL). 在程序目录中找到Mark

第八周课上内容补做

第八周课上内容补做 1. 通过输入gcc -S -o main.s main.c 将下面c程序"week04学号.c"编译成汇编代码 int g(int x){ return x+3; } int f(int x){ int i = 学号后两位: return g(x)+i; } int main(void){ return f(8)+1; } 删除汇编代码中 . 开头的代码,提交f 函数的汇编代码截图,图中用矩形标出函数栈帧的形成和销毁的代码. 结合C函数调用机制及栈帧指针中的实例,

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

OD调试9—实例:深入分析代码完成软件破解  爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出的一些走法,逆向程序的算法,才能体会逆向的真正乐趣! 所以,今天的主题是:是男人,就跟进去吧~ 这次还是使用一个比较简单的程序,不然太复杂的话,一步步跟进程序可能会把自己搞崩溃,脑子恐怕不够搞.大家凭自己的能力,能进入多少就进入多少,一分不少,一寸不多!能力是培养出来的,耐心! 试验软件:MrBil

Android上开发Android软件

先吐槽下Windows的Android开发环境配置,能把人恶心到死.为了这个,不小心把房东的楼梯护栏踢歪了.自己装过的人都懂,眼泪哗哗不想说了在Android上配置开发环境超乎寻常的简单,只需要下载一个软件就可以搞定:AIDE (Android java IDE)下载地址1: http://apk.banma.com/v0/app-feed/soft/apk/20140123/106bbb48f9c34982b84114f515958133.apk下载地址2:http://pan.baidu.c

一款好用的视频转换gif的小软件——抠抠视频秀

在平常生活中,我们拍下来精彩的视频想要转换为gif动画,或是想要录制网页上的视频.电脑上的鼠标操作等等,大家可以使用以下这款很好用的视频转换gif的小软件——抠抠视频秀,这个软件操作简单方便现在推荐给大家. 1.首先我们运行“抠抠视频秀”软件,界面如下,上面是操作按键区,中间是透明的窗体(后面的向日葵是我的电脑壁纸),下面是信息提示. 2.然后我现预设一下,点击“更多”按键.选择“抓取视频的频率”---“15帧/秒”(这个数值越大,GIF录制的越完整):选择“生成GIF文件的帧频”----“选这

开源一个常用的小软件的源码——系统数据库服务管理软件

郝喜路  2014年7月27日22:28:34 GitHub地址:https://github.com/haoxilu/ServiceManager    希望编程爱好者 更改添加...   开发环境:Visual Studio 2012   .Net Framework 4.0 大家在软件开发过程中,是离不开 数据库的,不管你用什么数据库,都会在系统服务上注册一个,当你安装了太多的数据库,是否有感到极大的拖掉了开机时间,影响了计算机的性能.(仅限windows系统).这时有的朋友可能会想到手动