iOS逆向-RSA的使用-證書簽名狡刘、代碼簽名(手動(dòng)簽名襟诸、腳本自動(dòng)簽名 《一》)

一:APP證書瓦堵、APP 的簽名與解密(低級(jí)簽名)

3.1 公鑰和私鑰(公鑰也是私鑰加密過的)
3.2 公鑰加密,私鑰解密
3.3 私鑰加密,公鑰解密

 * 密鑰 應(yīng)用場(chǎng)景:數(shù)字簽名
 * 數(shù)據(jù)報(bào)文發(fā)送:數(shù)據(jù)報(bào)文1、數(shù)據(jù)報(bào)文2歌亲、數(shù)據(jù)報(bào)文3...
 * 客服端:
  1.數(shù)據(jù)報(bào)文--> HASH算法(使用md5)--> 32位字符(md5值) --> RSA加密
   (對(duì)md5值進(jìn)行RSA公鑰加密:即 數(shù)字簽名)
  2.數(shù)據(jù)報(bào)文 + 數(shù)字簽名 --> 服務(wù)器

 * 服務(wù)器:
  1.數(shù)據(jù)報(bào)文--> HASH算法 --> 32位字符 str1
  2.數(shù)字簽名 --> RSA解密 --> 32位字符 str2  (利用私鑰解密)
  3. str1 = str2 (判斷數(shù)據(jù)有沒有被修改過)
1009-證書簽名.png
  • 數(shù)字簽名理解
簽名的詳細(xì)過程
1.Mac 的公鑰M --> 蘋果服務(wù)器 --> 驗(yàn)證后菇用,給Mac證書(對(duì)應(yīng)下面的過程3,公鑰M陷揪、HASH)
2.Mac 的私鑰M (放在鑰匙串里)--> 簽名加密app --> 數(shù)字簽名M(app更改內(nèi)容惋鸥,每次打包就是重新簽名M)

3.蘋果的私鑰A --> 簽名Mac 的公鑰M  --> 生成證書,放在app里--> 數(shù)字簽名A
4.手機(jī)通過app --> 取出證書 --> 用公鑰A 解密證書-->  
   4.1:得到公鑰M悍缠,對(duì)比HASH值卦绣,即 公鑰M =?HASH值飞蚓,判斷證書 是否被修改過滤港!
   4.2:公鑰M 解密app的簽名,判斷app是否被修改過趴拧,即上傳到蘋果服務(wù)器的過程是否被黑客修改溅漾!

   ?   以上過程用了兩次簽名,兩次解密
   ?   過程1是通過CSR文件申請(qǐng)證書著榴,app有了證書才能安裝
   ?   以上的 公鑰 相當(dāng)于 數(shù)據(jù)報(bào)文
   ?   以上的 app 相當(dāng)于 數(shù)據(jù)報(bào)文

簽名的詳細(xì)過程如下:

公鑰(數(shù)據(jù)報(bào)文)--> 蘋果服務(wù)器 --> HASH算法 --> 32位字符  --> RSA加密 驗(yàn)證后添履,私鑰A 簽名Mac 的公鑰M,給Mac簽名證書
這個(gè)簽名證書 --> 放到 app里

app(數(shù)據(jù)報(bào)文)--> HASH算法 --> 32位字符  --> RSA加密(私鑰M 對(duì)app進(jìn)行數(shù)字簽名) --> 數(shù)字簽名M
app + 數(shù)字簽名M --> 也放到 app里


二:代碼簽名(棕色部分)

低級(jí)簽名脑又,保證了開發(fā)者的認(rèn)證和程序的安全性缝龄,但是只要申請(qǐng)一個(gè)證書,就可以安裝在所有的iOS設(shè)備上了挂谍,蘋果為了防止這種安裝濫用的問題叔壤,又加了兩個(gè)限制:

  • 1.限制蘋果后臺(tái),對(duì)注冊(cè)過的設(shè)備才能安裝
  • 2.簽名只能針對(duì)某一個(gè)app
    所以-蘋果又生成了一個(gè)文件(也是通過蘋果服務(wù)器生成):Provision profile(描述文件:包含設(shè)備IDs(即:UDID)口叙、AppID炼绘、Entitlements(權(quán)利文件,即授權(quán)文件))
    描述文件 --> 也放到 app里

//--------------------手動(dòng)簽名 筆記--------------------------

// 會(huì)用到的終端命令

// 目錄到 此文件夾:存放一些描述文件
$ cd /Users/zhangmeng/Library/MobileDevice/Provisioning\ Profiles 
$ ls                                     // 查看此文件夾
$ open .                                 // 打開此文件夾
//查看 描述文件信息: 內(nèi)容是簽名加密的一個(gè)xml妄田,蘋果設(shè)備要信任此app
$ security cms -D -i + 描述文件路徑(齒輪配置文件, mobileprovision)
$ security cms -D -i embedded.mobileprovision  //這個(gè)已經(jīng)cd到當(dāng)前目錄
//查看 APP的簽名信息
$ codesign -vv -d  +APP路徑
$ codesign -vv -d WeChat.app    

//查看 本機(jī)所有證書
$ security find-identity -v -p codesigning
//查看 可執(zhí)行文件的加密信息!
$ otool -l WeChat | grep crypt
//簽名(這里是重簽名)
$ codesign -fs + "證書" + 需要簽名的文件
$ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" MMCommon.framework 
$ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" MultiMedia.framework 
$ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" WCDB.framework 
$ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" mars.framework 
//給可執(zhí)行文件 執(zhí)行權(quán)限!
$ chmod +x WeChat


  • 重簽名:
    // 準(zhǔn)備工作 新建一個(gè)項(xiàng)目俺亮,編譯一下
    // 對(duì)于越獄版的微信ipa包 內(nèi)容
  1. 干掉插件Plugins文件夾里面的內(nèi)容! (即刪除Plugins文件夾)
  2. Watch文件夾直接干掉!
  3. 對(duì) Frameworks 進(jìn)行簽名! // $ codesign -fs + "證書" + 需要簽名的文件
  4. 給可執(zhí)行文件執(zhí)行權(quán)限! // $ chmod +x WeChat //x 是可執(zhí)行權(quán)力
  5. 拷貝項(xiàng)目中的描述文件 到ipa包內(nèi)容里
  6. 修改info.plist 的Bundle ID! // 項(xiàng)目中的plist 的ID,放到ipa包里的plist 里
  7. 生成plist的權(quán)限文件, 拷貝到Payload文件夾內(nèi)
  8. 簽名整個(gè)APP:cd 到 Payload的文件目錄
    $ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" --no-strict --entitlements=en.plist WeChat.app
  9. 打包其實(shí)就是一個(gè)zip:cd 到包含 Payload的文件目錄
    $ zip -ry WeChat.ipa Payload

// 對(duì)于越獄版的微信ipa包
越獄版的微信ipa包
  • 步驟3:對(duì) Frameworks 進(jìn)行簽名!

// cd 到Frameworks 文件夾下
// $ ls //查看此文件內(nèi)容

 zhangmeng@zmMacPro ~/Desktop/iOS第二期 安全攻防/ipa包/001重簽名測(cè)試/微信-6.6.5(越獄應(yīng)用)/Payload/WeChat.app/Frameworks $ ls
MMCommon.framework   WCDB.framework
MultiMedia.framework mars.framework
 $ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" MMCommon.framework
MMCommon.framework: replacing existing signature
 $ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" MultiMedia.framework
MultiMedia.framework: replacing existing signature
 $ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" WCDB.framework
WCDB.framework: replacing existing signature
$ codesign -fs "iPhone Developer: dechang li (T2X4P24XF2)" mars.framework
mars.framework: replacing existing signature

  • 步驟4:給可執(zhí)行文件執(zhí)行權(quán)限! //此文件在ipa包內(nèi)容里
image.png
// $ chmod +x WeChat     //x 是可執(zhí)行權(quán)力
  • 步驟5: 拷貝項(xiàng)目中的描述文件 到ipa包內(nèi)容里
image.png
  • 步驟7:生成plist的權(quán)限文件, 拷貝到Payload文件夾內(nèi)

7.1 新建一個(gè)plist文件疟呐,命名為en(命名隨意)脚曾,鼠標(biāo)右鍵Open As --> Source Code 編輯plist文件
image.png
7.2 使用命令: $ security cms -D -i + 描述文件路徑(齒輪配置文件, mobileprovision) //查看描述文件信息,拷貝Entitlements里面的
 <dict>
        <key>keychain-access-groups</key>
        <array>
            <string></string>
        </array>
        <key>get-task-allow</key>
        <true/>
        <key>application-identifier</key>
        <string></string>
        <key>com.apple.developer.team-identifier</key>
        <string></string>
        <key>aps-environment</key>
        <string>development</string>
    </dict>
7.3 拷貝到 en.plist 內(nèi)启具,鼠標(biāo)右鍵Open As --> Property List 重新打開文件本讥,即生成了 plist文件
7.4 把 en.plist 拷貝到 Payload文件夾內(nèi)


//-------------------- 利用Xcode重簽名 --------------------

1、新建一個(gè)工程,然后執(zhí)行build拷沸,讓Products文件夾下面的app變黑色查;
2、拷貝微信的app文件包到新建工程撞芍,替換新工程里面的app文件包秧了,包名稱保持一致;
3序无、干掉插件Plugins文件夾里面的內(nèi)容验毡;
4、Watch 直接干掉帝嗡;
5晶通、對(duì) Frameworks 進(jìn)行簽名;
$codesign -fs "證書" 需要簽名的文件
6丈探、給可執(zhí)行文件執(zhí)行權(quán)限录择;
$chmod +x WeChat
7、修改ipa包內(nèi)info.plist 的 Bundle identifier碗降,要和項(xiàng)目一直隘竭;
8、Xcode運(yùn)行讼渊。

iOS逆向-RSA的使用:代碼簽名手動(dòng)簽名动看、腳本自動(dòng)簽名 《二》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市爪幻,隨后出現(xiàn)的幾起案子菱皆,更是在濱河造成了極大的恐慌,老刑警劉巖挨稿,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仇轻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奶甘,警方通過查閱死者的電腦和手機(jī)篷店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臭家,“玉大人疲陕,你說我怎么就攤上這事《ち蓿” “怎么了蹄殃?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長你踩。 經(jīng)常有香客問我诅岩,道長讳苦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任按厘,我火速辦了婚禮医吊,結(jié)果婚禮上钱慢,老公的妹妹穿的比我還像新娘逮京。我一直安慰自己,他們只是感情好束莫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布懒棉。 她就那樣靜靜地躺著,像睡著了一般览绿。 火紅的嫁衣襯著肌膚如雪策严。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天饿敲,我揣著相機(jī)與錄音妻导,去河邊找鬼。 笑死怀各,一個(gè)胖子當(dāng)著我的面吹牛倔韭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓢对,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼寿酌,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了硕蛹?” 一聲冷哼從身側(cè)響起醇疼,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎法焰,沒想到半個(gè)月后秧荆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埃仪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年乙濒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贵试。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琉兜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毙玻,到底是詐尸還是另有隱情豌蟋,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布桑滩,位于F島的核電站梧疲,受9級(jí)特大地震影響允睹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幌氮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一缭受、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧该互,春花似錦米者、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至随橘,卻和暖如春喂分,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背机蔗。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國打工蒲祈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人萝嘁。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓梆掸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酿愧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沥潭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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