实例破解

学会如何破解一款简单的商业程序

目标:破解软件功能限制

工具:OD

第一个目的:跳过注册直接进行随意创建Group

方法:手动配置

方法详述:首先打开AboutPixtopianBook,弹出未注册版本信息。我们将其载入OD,点击运行后,并没有出现程序界面,而是抛出了异常,我们手动开启忽略异常。打开后选择 exception勾选需要的选项,再点击Add lase exception。配置完成后点击OK。配置完成后重新载入程序,点击运行,成功打开了程序。这是第一步第二步正式开始我们的破解!将软件载入OD,点击Add Group。我们在其弹出消息框后暂停OD。此时状态栏显示:暂停,我们此时需要返回到程序领空,快捷键Alt+F9。然后点击消息框确定 此时状态栏显示:‍返回到用户‍。我们成功返回到程序领空,向上翻。看到了一个MessageBox,这就是我们刚才确定的那个消息框。向下我们将看到retn 0xC 这个命令将带我们返回到调用CALL处。所以我们继续向下执行。进行retn:我们跳出了call,返回到了调用处。这里已经很清楚,我们知道的几个点分别是:

1.这个Call就是我们刚才进入的Call,加入我们能跳过这个call,就能避免跳出消息框。

2.查看这个ascii码,正是消息框的标题和内容,在这里被压入栈,等待调用。

3.这里有一个cmp,比较eax与3大小(即Group是否等于3),如果小于就跳转到(JL)00408B34,如果已经有3个Group了,就执行call弹出未注册消息框。

所以活学活用,运用上章学习的PE知识,将JL(小于则跳转)改为jmp(强制跳转)。

这样我们就成功跳过了GROUP验证。就可以自由添加Group了。

同理联系人也是一样的方法。

      第二个目的:更改版本信息

方法详述:这我了解到标题,版本文字在代码区是找不到的,我们直接在内存中找。输入查找关键字UNREGISTERED。如果ASCII没有搜索到就用UNICODE,(这里ASCII也可以搜索到,不过不是版本信息,UNICODE下搜索到版本信息,点击确定)记录下004D4830,在dump面板跳转,跳转之后成功找到需要修改的内容,我们选择要修改的内容,右键编辑编辑为自己想写的字符。!在所有工作做完之后,不要忘记保存,通过复制到可执行文件,再进行保存文件,这样就可以成功的更改为我们想要的效果了!

第三个目的:结尾美化

方法详述:也是直接用更改的方法,可以知道注册文字在48F974处,在dump(数据窗口)窗口右键跳转到48F974。我们需要知道程序哪一段调用了这段字符串。我们右键选择查找参考(Ctrl+R)。找到一处引用,我们双击进入,我们来到如图所示的代码位置,发现上面有一处cmp和jnz(cmp与jnz组合代表:如果不相等,则跳转),如果ebp等于907,则将这串字符压入栈(可以猜测,907代表未注册),我们根据跳转向上翻。当翻到0040C197发现又有一处cmp和jnz,意思是如果ebp不等于906,就要跳转回0040C22F处。(那么906代表注册过),那么这个程序我们已经完全弄清楚了,我们直接在0040C235的jnz处进行强制跳转,让其不会将这串字符压入栈。修改后,我们最后一次保存(这里与刚刚强调的保存方法一致)那么运行后便是我们想要的效果了。

学习破解的目的及感想:

破解软件在我开始接触看来,非常的有趣。只要改变代码,将jnz进行强行跳转便可以直接跳过,达成我们的目的。头一次觉得编程是件非常神奇的事,只要简单地改变这内存中的一段简单的数字和字母,便会对整个软件的进行产生翻天覆地的变化。这个寒假还很长,希望我能利用好自己的时间好好地深入了解我想学到的软件类知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值