【HOOK】对程序未知函数进行hook,新手写hook的第一天
本帖最后由 听风讲故事诶 于 2021-6-14 19:08 编辑朋友昨天发来一份修改硬盘序列号的软件,大概是解机器码的,今天打开发现软件界面很简洁,没有网络验证只是简单的注册码注册软件,对反汇编一无所知的我想尝试破解一下软件,于是想到了hook,虽然hook对逆向没有多大关系,但是也可以尝试破解一下嘛,希望大佬们手下留情,很详细很适合新手看!软件界面:
我们先查看一下自己电脑的硬盘序列号方便查看有没有修改成功
先点一下试用看看是什么效果很坑,试用时间才2分钟,再查看一下序列号确实修改成功了,但是试用期结束后弹出了个对话框,确定之后软件就自动结束了,重新打开软件后查看硬盘序列号也变成之前的数据了,这也太坑了,虽然能每次重新打开就会有2分钟的试用时间,但这肯定不行的
于是我想到了两种办法破解:1.hook掉这个对话框,这样就不会自动结束进程了。2.一般这种倒计时软件大多数会调用计时api函数(SetTimer),hook掉这个函数把周期参数改成9999试用时间不就不会变了吗?首先尝试第一种方法,大胆猜测这是MessageBoxA函数,如果是的话那就特别简单了。
用我自己写的API监视软件查看有没有调用了MessageBoxA,直接注入到进程看看
hook成功了,点注册看看有没有调用了MessageBoxA,程序卡死,看来易语言写的inlinehook还有不能有窗口加载到进程里面,也许是猜测失败了,暂时先把第一种尝试方法放一放,我们来hook一下SetTimer函数。
先简单做一下过滤,函数的参数周期肯定是1000
继续注入监视SetTimer发现还没点试用就调用了SetTimer,说明是别的模块在调用SetTimer,我们不管这个,点试用看看,发现了一条数据!
时钟标识是1000,尝试拦截一下看看试用时间会不会变动
重新注入后:看样子已经大功告成了,时钟标识id是唯一的,所以只要把标识为1000的函数hook掉就OK了
学习,膜拜,我也是第一次接触hook,请问楼主有无教程,谢谢{:3_48:} 猫九@ 发表于 2021-7-3 21:05
楼主能留一下联系方式吗,想深入讨论一下
2772998653 楼主能留一下联系方式吗,想深入讨论一下 听风讲故事诶 发表于 2021-6-14 21:00
逆向毕竟太难了嘛
楼主能不能把软件母本发一下,我想嫖软件的改SN了 有有有~~~~~~~~~支持一下 Ts_冰枫 发表于 2021-6-14 20:19
老实说,既然有试用,而且是这种改硬件的软件,我一句挂起代码就任我宰割了,其实无需大费周章,不过方法是 ...
硬件以前也改过,用驱动容易蓝屏 Ts_冰枫 发表于 2021-6-14 20:19
老实说,既然有试用,而且是这种改硬件的软件,我一句挂起代码就任我宰割了,其实无需大费周章,不过方法是 ...
逆向毕竟太难了嘛 老实说,既然有试用,而且是这种改硬件的软件,我一句挂起代码就任我宰割了,其实无需大费周章,不过方法是好的,毕竟我只是对症下药 本帖最后由 听风讲故事诶 于 2021-6-14 19:23 编辑
没法继续编辑了。。。最后查看硬盘序列号也是成功修改了看来只用hook也可以对一些软件破解哈回到第一种方法,只要hook掉试用时间结束后弹出的对话框也可以实现无限试用,但是暂时不知道对话框是调用了什么函数,这时候需要用到一个工具:API Monitor,这个工具主要是用来监视进程对系统函数的调用包括内核层,甚至可以进行内存编辑。
页:
[1]
2