你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> Cycript簡介以及繞過屏幕解鎖密碼

Cycript簡介以及繞過屏幕解鎖密碼

編輯:關於IOS

簡介

Cycript是一個理解Objective-C語法的javascript解釋器,這意味著我們能夠在一個命令中用Objective-C或者javascript,甚至2者兼用。它能夠掛鉤正在運行的進程,能夠在運行時修改應用的很多東西。

使用Cycript有如下好處:

  • 1.我們能夠掛鉤正在運行的進程,並且找出正被使用的類信息,例如view controllers,內部和第3方庫,甚至程序的delegate的名稱。
  • 2.對於一個特定的類,例如View Controller, App delegate或者任何其他的類,我們能夠得到所有被使用的方法名稱。
  • 3.我們能夠得到所有實例變量的名稱和在程序運行的任意時刻實例變量的值。
  • 4.我們能夠在運行時修改實例變量的值。
  • 5.我們能夠執行Method Swizzling,例如替換一個特定方法的實現。
  • 6.我們可以在運行時調用任意方法,即使這個方法目前並不在應用的實際代碼當中。

安裝Cycript

Cycript的官網在http://www.cycript.org/,最新版本是 0.9.501。
在iOS越獄設備上,默認就有這個工具(參見這裡 和 這裡),在iOS的命令行輸入

<code class=" hljs ">cycript
</code>

即可。如果你遇到問題,可以在Cydia中把模式切換成開發者,然後搜索Cycript,從Cydia中安裝一下。

當然,你直接從網站上下載到Mac上,然後在上傳到iOS設備上也行。

用法舉例

下面我們介紹Cycript的用法: 首先用命令

<code class=" hljs ">ps aux
</code>

找到要分析的應用的pid,然後用命令:

<code class=" hljs ">cycript -pid xxx
</code>

如下圖所示:

Cycript簡介以及繞過屏幕解鎖密碼

然後你可以輸入ObjectiveC的語法,比如:

<code class=" hljs json"> [UIApplication sharedApplication]
</code>

在Cycrit下:

<code class=" hljs css"><span class="hljs-tag">UIApp</span>  和 <span class="hljs-attr_selector">[UIApplication sharedApplication]</span> 等效
</code>

你甚至可以改提示數字了。此時按Home,讓應用切到後台,然後輸入如下的命令:

<code class=" hljs ">UIApp.applicationIconBadgeNumber=100
</code>

效果如圖:

Cycript簡介以及繞過屏幕解鎖密碼

<code class=" hljs ">UIApp.applicationIconBadgeNumber=200
</code>

效果如圖:

Cycript簡介以及繞過屏幕解鎖密碼

使用Cycript繞過屏幕解鎖密碼

首先,請確保你的iOS設備設置了鎖屏密碼,然後請鎖屏待機。

然後在你的Mac上ssh進你的iOS設備,

<code class=" hljs ruby">ssh root<span class="hljs-variable">@your_ios_device_ip</span>
</code>

然後執行如下命令:

<code class=" hljs ">cycript -p SpringBoard
</code>

然後輸入:

<code class=" hljs ">SBAwayController.sharedAwayController
</code>

如下所示:

<code class=" hljs bash">Tedteki-iPad:~ root<span class="hljs-comment"># cycript -p SpringBoard</span>
cy<span class="hljs-comment"># SBAwayController.sharedAwayController</span>
<span class="hljs-comment">#"&lt;SBAwayController: 0x1d99aaa0&gt; &lt;SBActivationContext: 0x1d99adf0&gt; activate:  deactivate: "</span>
</code>

我們向要打印一個類的所有方法,可以使用Cycript Tricks中的printMethods。

繼續輸入:

<code class=" hljs javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">printMethods</span><span class="hljs-params">(className)</span> {</span>
  <span class="hljs-keyword">var</span> count = <span class="hljs-keyword">new</span> <span class="hljs-keyword">new</span> Type(<span class="hljs-string">"I"</span>);
  <span class="hljs-keyword">var</span> methods = class_copyMethodList(objc_getClass(className), count);
  <span class="hljs-keyword">var</span> methodsArray = [];
  <span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i &lt; *count; i++) {
    <span class="hljs-keyword">var</span> method = methods[i];
    methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)});
  }
  free(methods);
  free(count);
  <span class="hljs-keyword">return</span> methodsArray;
}
</code>

然後在命令行中執行:

<code class=" hljs ">printMethods(SBAwayController)
</code>

可以得到如下圖所示的信息:

Cycript簡介以及繞過屏幕解鎖密碼

從圖中可以發現這個方法:

<code class=" hljs css"><span class="hljs-rules">{<span class="hljs-rule"><span class="hljs-attribute">selector</span>:<span class="hljs-value">@<span class="hljs-function">selector(unlockWithSound:bypassPinLock:)</span>,implementation:<span class="hljs-number">0</span>x10d6e9</span></span></span>}
</code>

即方法:

<code class=" hljs objectivec">-(<span class="hljs-keyword">void</span>)unlockWithSound:(<span class="hljs-built_in">BOOL</span>)arg1 bypassPinLock:(<span class="hljs-built_in">BOOL</span>)arg2;
</code>

如下圖:

Cycript簡介以及繞過屏幕解鎖密碼

在cycript中的輸入:

<code class=" hljs json">[SBAwayController.sharedAwayController unlockWithSound:<span class="hljs-number">1</span> bypassPinLock:<span class="hljs-number">1</span>]
</code>

你的iOS設備就實現了無密碼解鎖。

小結

Cycript功能非常強大,能夠在運行時對iOS應用做修改,我們會在後面的章節詳細介紹更多用法。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved