某去水印软件爆破思路

admin 2022年8月14日15:16:26程序逆向评论14 views1062字阅读3分32秒阅读模式

某去水印软件爆破思路

额,我没学过汇编,也不会用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的返回值,从而使不修改跳转也能实现想要的跳与不跳,比这种无脑爆破更加优雅,最优解是软件打开时直接改成已注册,但是我不懂汇编,所以无力研究,等啥时候学会了再来复盘。

该内容转载自网络,更多内容请点击“阅读原文”

某去水印软件爆破思路



原文始发于微信公众号(web安全工具库):某去水印软件爆破思路

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月14日15:16:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  某去水印软件爆破思路 http://cn-sec.com/archives/1236199.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: