某去水印软件爆破思路
2022-12-22 09:3:28 Author: 橘猫学安全(查看原文) 阅读量:36 收藏

额,我没学过汇编,也不会用x64dbg,所以做的不完美,大佬看(xiao)看(xiao)就行了。
PS最近老奔溃,想起来电脑上还有个快速去水印的小工具,打开更新了下版本到最新,提示要注册,网上搜了下好像也没公开版,所以就有了这个帖子。

所有的逆向都一样,上手先DIE查壳,64bit c++程序,因此逆向工具应该选x64dbg,开发语言QT应该是误判,因为没有QT相关的dll。

打开要处理的图片,涂抹消除水印后保存,提示没注册。


根据我长达一年半的.Net逆向经验,有弹窗的时候,暂停,然后看调用堆栈找来源就行。

因此掏出x64dbg,把程序拖进去跑起来,一直到弹出未注册的对话框时点暂停,然后查看调用堆栈窗口。


看这个堆栈,一层一层找关键 Call 的话会很麻烦。

因此考虑其它快速定位关键位置的方法,如,bp断点,字符串搜索等方式。通常QT程序或者mfc程序都可以这么去处理。

这里有个小技巧,直接搜中文字符串可能找不到,因为它是多语言软件。

此时我们先把软件的语言切换到英文。

对应的弹窗提示信息就变成了“This feature ...”

这种时候搜索字符串就很容易能找到。


至于原因,做过软件开发的同学都知道,一般我们会设置控件的text属性,而多语言则通过钩子或者别的方式替换text的内容,没有对应的语言文件则显示你设置的text内容。

双击搜索结果来到调用,可以看到第一个框起来的地方会影响到这个字符串,调试了一下发现到这里jne没有跳转,因此导致弹出了注册框。

回想一下我学过的少的可怜的汇编知识,jne的反义词是je。

所以在这里暴力点儿,把jne改成je让跳过这个代码段。

此时点击保存就不会弹窗了,但是紧接着发现点了保存以后并没有保存……

在函数最后的ret上下个断点,跑到断点后F8,即可找到这个call的来源。


跟一下能看到有个je

这个je将要跳转,看了下跳过的这段的内容,比较关键。

左侧的红线区域即为刚才的je范围,很大,看右边的字符串,明显把保存各种格式的操作给跳过了。

同样的知识再用一遍,je的反义词是jne,改了以后程序就能正常保存了。

------

反思:
本次的内容建立与dnSpy用惯了以后把知识体系挪用到x64dbg上的实践,实际上应该在关键call里修改ret的返回值,从而使不修改跳转也能实现想要的跳与不跳,比这种无脑爆破更加优雅,最优解是软件打开时直接改成已注册,但是我不懂汇编,所以无力研究,等啥时候学会了再来复盘。

转自:https://www.chinapyg.com/thread-144265-1-1.html
如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell
「 超详细 | 分享 」手把手教你如何进行内网渗透
神兵利器 | siusiu-渗透工具管理套件
一款功能全面的XSS扫描器
实战 | 一次利用哥斯拉马绕过宝塔waf
BurpCrypto: 万能网站密码爆破测试工具
快速筛选真实IP并整理为C段 -- 棱眼
自动探测端口顺便爆破工具t14m4t
渗透工具|无状态子域名爆破工具(1秒扫160万个子域)
查看更多精彩内容,还请关注橘猫学安全:
每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“再看

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5OTY2NjUxMw==&mid=2247502053&idx=3&sn=f8650439700801e155d051b5b79bfb71&chksm=c04d4fdbf73ac6cd32d5e8c9a3494bf3a378ab595efaaa0b525f0a1e6b344f8f2e4308e21668#rd
如有侵权请联系:admin#unsafe.sh