macOS掃雷逆向破解

小長(zhǎng)假閑的無聊,對(duì)macOS下的掃雷小程序進(jìn)行了簡(jiǎn)單的逆向俱诸。

其中安全帽只有10個(gè)错妖,用完了之后就需要在App Store進(jìn)行購買知押,同時(shí)「高級(jí)」和「自定義」功能也需要在應(yīng)用商店進(jìn)行購買才可以玩。

最終的效果就是無限安全帽以及「高級(jí)」功能可用魄宏,「自定義」功能和「高級(jí)」功能破解手法一樣秸侣,反匯編后的函數(shù)都緊挨著,就懶得去修改了,有興趣的可以參照本文的套路進(jìn)行自行修改味榛。

總的來說椭坚,掃雷這個(gè)小游戲作為單機(jī)的應(yīng)用程序可以歸類為最最簡(jiǎn)單的入門級(jí),破解手法就是連蒙帶猜搏色。當(dāng)然善茎,作為自己第一次完全獨(dú)立的去嘗試破解也著實(shí)花了一番氣力。

工具準(zhǔn)備

bbedit macOS下的一款編輯器频轿,可以識(shí)別二進(jìn)制的plist文件垂涯。如果不想使用這款工具,使用macOS自帶的plutil命令也可以達(dá)到目的航邢。

Hopper 跨平臺(tái)的反匯編靜態(tài)分析工具耕赘。

OK,這兩個(gè)第三方工具已經(jīng)可以了翠忠。

黑暗森林

先來看「安全帽」的破解思路鞠苟。首先「安全帽」是作為漢字出現(xiàn)在菜單欄中的,在內(nèi)部一定有一個(gè)對(duì)應(yīng)的英文字符串秽之,而這個(gè)字符串在代碼中很可能就是相關(guān)的函數(shù)或者變量名字或者是名字的一部分当娱。

使用bbedit打開/Applications/Minesweeper Deluxe.app/Contents/Resources/zh-Hans.lproj/MainMenu.nib文件。
打開之后是一個(gè)轉(zhuǎn)換好的xml格式的文件考榨。這個(gè)文件的具體格式可以參考下面這個(gè)文章:https://www.cclgroupltd.com/geek-post-nskeyedarchiver-files-what-are-they-and-how-can-i-use-them/

「cmd+f」搜索一下「安全帽」->「Find All」


可以看到「5個(gè)安全帽」對(duì)應(yīng)的就是「buy5Robot」跨细,好了,現(xiàn)在可以猜測(cè)與「安全帽」相關(guān)的符號(hào)在代碼中跟「Robot」相關(guān)河质。

下一步就是使用Hopper打開掃雷程序冀惭,在Hopper中搜索Robot相關(guān)的符號(hào)。

可以看到有好多Robot相關(guān)的函數(shù)和變量掀鹅,這里發(fā)現(xiàn)兩個(gè)方法-[GameState robot]和-[GameState setRobot]散休,從名字可以推斷是獲取或者設(shè)置安全帽的方法。

在-[GameState robot]中設(shè)置斷點(diǎn)乐尊,通過Hopper debug server進(jìn)行動(dòng)態(tài)調(diào)試戚丸。


發(fā)現(xiàn)rax中的返回值總是0(事先已經(jīng)消耗光了默認(rèn)的10個(gè)安全帽)。而且每次只要使用安全帽扔嵌,都會(huì)進(jìn)入到這個(gè)函數(shù)限府。通過Debug Console使用lldb臨時(shí)設(shè)置一下rax的值,發(fā)現(xiàn)果然安全帽的數(shù)量被修改了痢缎。


使用Hopper修改0x000000010006381處的指令胁勺,修改為

mov al, 0x1
nop

這樣和原來的指令一樣,占3個(gè)字節(jié)独旷。

這樣修改完成后署穗,每次按住Alt使用安全帽時(shí)獲取的安全帽的數(shù)量總是返回1寥裂。
保存修改后的二進(jìn)制文件,并且替換掉原來的二進(jìn)制程序即可蛇捌。

「高級(jí)」功能的破解也是類似抚恒,先找到跟「高級(jí)」相關(guān)的單詞expert,然后在Hopper中搜索expert络拌,找到方法-[minesweepermacAppDelegate startNewGameExpert:]
然后進(jìn)行分析俭驮,修改0x00000001000589c6位置處的指令為

jne        -[minesweepermacAppDelegate startNewGameExpert:]+71

后續(xù)

可以參考網(wǎng)上其他公開的方法來破解。

本文只作記錄逆向?qū)W習(xí)使用春贸,破解完成后切勿公開混萝,支持正版軟件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萍恕,一起剝皮案震驚了整個(gè)濱河市逸嘀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌允粤,老刑警劉巖崭倘,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異类垫,居然都是意外死亡司光,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門悉患,熙熙樓的掌柜王于貴愁眉苦臉地迎上來残家,“玉大人,你說我怎么就攤上這事售躁∥牖矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵陪捷,是天一觀的道長(zhǎng)回窘。 經(jīng)常有香客問我,道長(zhǎng)市袖,這世上最難降的妖魔是什么啡直? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮凌盯,結(jié)果婚禮上付枫,老公的妹妹穿的比我還像新娘烹玉。我一直安慰自己驰怎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布二打。 她就那樣靜靜地躺著县忌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上症杏,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天装获,我揣著相機(jī)與錄音,去河邊找鬼厉颤。 笑死穴豫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逼友。 我是一名探鬼主播精肃,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼帜乞!你這毒婦竟也來了司抱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤黎烈,失蹤者是張志新(化名)和其女友劉穎习柠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體照棋,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡资溃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了必怜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肉拓。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梳庆,靈堂內(nèi)的尸體忽然破棺而出暖途,到底是詐尸還是另有隱情,我是刑警寧澤膏执,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布驻售,位于F島的核電站,受9級(jí)特大地震影響更米,放射性物質(zhì)發(fā)生泄漏欺栗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一征峦、第九天 我趴在偏房一處隱蔽的房頂上張望迟几。 院中可真熱鬧,春花似錦栏笆、人聲如沸类腮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚜枢。三九已至缸逃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厂抽,已是汗流浹背需频。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筷凤,地道東北人昭殉。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像藐守,于是被迫代替她去往敵國(guó)和親饲化。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評(píng)論 25 707
  • 前言 近期實(shí)戰(zhàn)了一次 IDA + Hopper 逆向破解吗伤。講真吃靠,第一次體驗(yàn)了一回把別人“衣服”扒光了的快感~簡(jiǎn)直 ...
    劉勛鵬easy鳳凰的故事閱讀 8,890評(píng)論 0 9
  • 掃雷是我第一個(gè)取得顯著成就的游戲,但一直沒有機(jī)會(huì)寫一篇關(guān)于它的文章足淆。前不久巢块,一家游戲媒體約我就掃雷做個(gè)采訪,列舉了...
    深加思考閱讀 2,759評(píng)論 4 5
  • 我什么時(shí)候能夠遇見雪巧号?我什么時(shí)候能夠遇見你族奢? 冬天光芒化成白雪,白雪裹著你從山頂下來丹鸿,來五谷豐登的村莊越走。 白雪比春...
    他是鬼徹閱讀 215評(píng)論 0 1
  • 屏幕分辨率是屏幕所包含的像素點(diǎn) 像素是圖像的基本單位:點(diǎn) Dp= dip :deivce independent ...
    小鹿啊小鹿閱讀 1,446評(píng)論 0 0