如何激活成功教程Mac软件的付费限制(一)

如何激活成功教程Mac软件的付费限制(一)一、前言在使用Mac的过程中,经常会碰到一些软件,属于付费使用产品。那么处于好奇或者自学的目的,能不能绕过这个限制呢。今天简单的分享下我激活成功教程的几款软件当中的一款,具体是什么软件就不说了,主要是提供下激活成功教程的思路。由于不能供发图,所以这里简单介绍下这款软件。这款软件是AppStore上的一款磁盘清理软件,扫描是免费的。扫描到数据之后,点击清理按钮时候会检查是否注册。如果注册了,直接进入清理程序,否…

大家好,又见面了,我是你们的朋友全栈君。

一、前言

在使用Mac的过程中,经常会碰到一些软件,属于付费使用产品。那么处于好奇或者自学的目的,能不能绕过这个限制呢。今天简单的分享下我激活成功教程的几款软件当中的一款,具体是什么软件就不说了,主要是提供下激活成功教程的思路。由于不能供发图,所以这里简单介绍下这款软件。这款软件是App Store上的一款磁盘清理软件,扫描是免费的。扫描到数据之后,点击清理按钮时候会检查是否注册。如果注册了,直接进入清理程序,否则弹出注册页面。

二、环境准备

我这里使用的是Hopper + lldb来进行调试。Hopper是一款反汇编二进制的软件,可以将一个MachO(苹果的可执行文件)文件反汇编成汇编代码,查看程序的一些基本逻辑。而lldb是系统提供的一款调试软件,可以对程序下断点、单步调试等操作。如何不太熟悉这两款这两款软件如何使用,可以百度学习下,这里先不介绍。

三、代码定位

先下载指定App到本地,运行软件,观察软件的特征。打开Hopper,将App的Macho文件拖入进去,即可对相应app进行反汇编。一般来说,类名和方法名是没有被混淆的(当然也有通过加壳进行混淆的,相应可以进行脱壳),我们大致可以通过类名和方法名来进行定位相应代码。这里是我定位到相应的部分汇编代码

-[XXXXXXXXViewController cleanPressed:]:
00000001000275ee         lea        rdx, qword [cfstring_Clean_Clicked] 
00000001000275f5         lea        rcx, qword [cfstring_] 
00000001000275fc         mov        rdi, r14
00000001000275ff         mov        r8, rcx
0000000100027602         mov        r9, rbx
0000000100027605         call       r13   
0000000100027608         mov        r15, qword [_objc_release_1000fb5b0]
000000010002760f         mov        rdi, rbx       
0000000100027612         call       r15                   
0000000100027615         mov        rdi, r14 
0000000100027618         call       r15   
000000010002761b         mov        rdi, qword 
0000000100027622         add        rdi, r12   
0000000100027625         call       imp___stubs__objc_loadWeakRetained
000000010002762a         mov        rbx, rax
000000010002762d         mov        rsi, qword [0x100138678]    
0000000100027634         mov        rdi, rbx     
0000000100027637         call       r13    
000000010002763a         mov        r14, rax
000000010002763d         mov        rdi, rbx     
0000000100027640         call       r15           
0000000100027643         test       r14, r14
0000000100027646         je         loc_10002768a

从方法名可以看出是清理按钮按下方法,从倒数第二行可以看出是进行对比,如果注册直接进行清理,不注册则弹出注册界面。这里是我大致初步的判断,如何判断我是否找对了呢?这时候就需要lldb来进行挂载调试了。

四、lldb挂载调试

lldb如果没有接触过,可以百度进行学习,这里受篇幅限制,不作介绍。对于lldb来说,最重要的就是下断点,而下断点要么是符号,要么就是地址。上面Hopper反汇编出来可以看到,已经具备了地址,那么是不是可以使用这个地址进行下断点呢?这里就需要说下苹果的ASLR机制。
在计算机科学中,地址空间配置随机加载(英语:Address space layout randomization,缩写ASLR,又称地址空间配置随机化、地址空间布局随机化)是一种防范内存损坏漏洞被利用的计算机安全技术。ASLR通过随机放置进程关键数据区域的地址空间来防止攻击者能可靠地跳转到内存的特定位置来利用函数。现代操作系统一般都加设这一机制,以防范恶意程序对已知地址进行Return-to-libc攻击。
所以每一次程序被加载进内存,内存起始地址都会随机,获取到这个随机地址加上Hopper里的地址就是真实的地址。那么如何拿到这个地址呢?
打开命令行终端,执行命令lldb -n (appname) -w,然后点击运行相应程序。当程序启动后,发现被挂起,终端lldb进入可执行命令模式,紧接着输入以下命令
im list -o -f ,得到以下输出内容

[  0] 0x00000000024ed000 XXXX.app/Contents/MacOS/XXXX
[  1] 0x000000010922a000 /usr/lib/dyld
[  2] 0x0000000102652000 AFNetworking
[  3] 0x00000001026c6000 CargoBay
[  4] 0x00000001026eb000 RNCryptor_objc

所以可以看到实际的地址应该是0x0000000100027640+0x00000000024ed000,接下来对该地址进行下断点
br set -a "0x0000000100027640+0x00000000024ed000",下断点成功,点击软件的清理按钮,发现该地方只是弹出是否选择文件的判断。继续看cleanPressed方法汇编的代码,发现有如下汇编代码

->  0x102514674 <+246>: testb  %al, %al
    0x102514676 <+248>: je     0x102514771               
    0x10251467c <+254>: movq   %rbx, %rdi
    0x10251467f <+257>: callq  *0xd3f2b(%rip)   

testb指令的含义是将两个寄存器的值进行与操作,如果为1,则je条件成立,如果为0,je条件为假。那么我们可以通过register read/x al来读取寄存器的值,打印的值为0x0,那么我们只要将al寄存器的值设置为0x1即可绕过该操作。通过命令register write al 0x1将寄存器的值进行改写,之后输入命令c来进行继续运行,发现正常进行了清理,跳过了注册的步骤,成功绕过注册的限制。

五、总结

由于不能写出相应app的名称,导致整篇文章看起来比较难以理解。本篇只是从逻辑上进行讲解,大概的一个流程。本篇虽然实现了绕过注册逻辑,但是这样手动一步一步比较麻烦。好在lldb提供了python脚本自动化的能力,那么下一篇文章我们讲解如何通过python来自动化实现产品注册绕过的实现。

~ 欢迎大家加入我们的知识星球,一起交流学习 ~
微信扫码加入:
鹅厂Lemon团队笔记
点击链接加入:https://t.zsxq.com/n27YzRV

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148377.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • contextmenu是什么事件_onpropertychange事件

    contextmenu是什么事件_onpropertychange事件用户点击鼠标右键时触发并打开上下文菜单禁用:document.oncontextmenu=function(){   returnfalse;}编辑自定义右键打开菜单document.oncontextmenu=function(){   returnfalse; } document.body.addEventListener(‘mousedown’…

  • zergRush (CVE-2011-3874) 提权漏洞分析

    zergRush (CVE-2011-3874) 提权漏洞分析转战Android试水老洞,zergRush(CVE-2011-3874)ROOT提权漏洞原理的技术分析。

  • Delphi 2010下载+完美激活成功教程「建议收藏」

    Delphi 2010下载+完美激活成功教程「建议收藏」点击链接进入http://altd.embarcadero.com/download/RADStudio2010/delphicbuilder_2010_3615_win.isoRADStudio/

  • javascript中的默认对象

    javascript中的默认对象

  • 2020十大正规现货交易平台排行榜

    2020十大正规现货交易平台排行榜对国内投资者而言,贵金属投资有内、外盘之分,因此者在选择平台,投资者应该从市场成熟度和产品优势出发,先明确自己在哪一个市场进行投资,再挑选那些信誉度极高、以客户利益为大前提、在行业内排名较前平台。其中,上海黄金交易所(SGE)属于国家级的交易场所,也是目前国内唯一能够同时兼营黄金和白银现货产品的交易所。如果投资者想通过排名靠前的平台参与上金所的产品,可以在国内的四大商业银行中作出选择。至于外盘产品方面,我们建议投资者选择香港排名靠前的平台。因为香港的正规平台都持有金银业贸易场(CGSE)颁发的牌照,而只

  • React 路由—基本使用「建议收藏」

    React 路由—基本使用「建议收藏」一:安装运行npmireact-router-dom安装react路由依赖项创建一个App.js根组件,并在根组件中,按需导入路由需要的三个组件HashRouter:表示路由的包裹

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号