二進(jìn)制和資源文件自檢

我們把自己的程序發(fā)布到 app store漏益,但是不能保證每一個(gè)用戶都是從 app store 下載官方 app楞捂,也不能保證每一個(gè)用戶都不越獄襟交。 換句話說(shuō),我們無(wú)法保證程序運(yùn)行環(huán)境在 MAC 管控策略下就絕對(duì)的安全鞋屈。 所以范咨,在有些情況下,尤其是和錢有關(guān)系的 app 厂庇,我們有必要在和服務(wù)器通信時(shí)渠啊,讓服務(wù)器知道客戶端到底是不是官方正版的 app 。

何以判斷自己是不是正版 app 呢权旷? hackers 們破解你的 app 替蛉,無(wú)非就 2 個(gè)地方可以動(dòng),1 個(gè)是二進(jìn)制拄氯,1 個(gè)是資源文件躲查。

二進(jìn)制都重新編譯過(guò)了自然肯定是盜版……

有些低級(jí)的 hackers 喜歡修改人家的資源文件然后貼上自己的廣告,或者給用戶錯(cuò)誤的指引……修改資源文件是不需要重新編譯二進(jìn)制的译柏。

因此镣煮,我們有必要在敏感的請(qǐng)求報(bào)文中,增加正版應(yīng)用的二進(jìn)制和資源文件的標(biāo)識(shí)鄙麦,讓服務(wù)器知道典唇,此請(qǐng)求是否來(lái)自正版的未經(jīng)修改的 app 。 在沙盒中胯府,我們可以讀到自己程序的二進(jìn)制介衔,也可以讀到資源文件簽名文件,這兩個(gè)文件都不算大骂因,我們可以對(duì)其取 md5 值然后以某種組合算法得到一個(gè)標(biāo)記字符串炎咖,然后發(fā)給服務(wù)器。

我封裝了相關(guān)文件的讀取地址

@implementation WQPathUtilities

+ (NSString *)directory:(NSSearchPathDirectory)dir

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(dir, NSUserDomainMask, YES);

NSString *dirStr = [paths objectAtIndex:0];

return dirStr;

}

+ (NSString *)documentsDirectory

{

return [WQPathUtilities directory:NSDocumentDirectory];

}

+ (NSString *)cachesDirectory

{

return [WQPathUtilities directory:NSCachesDirectory];

}

+ (NSString *)tmpDirectory

{

return NSTemporaryDirectory();

}

+ (NSString *)homeDirectory

{

return NSHomeDirectory();

}

+ (NSString *)codeResourcesPath

{

NSString *excutableName = [[NSBundle mainBundle] infoDictionary][@"CFBundleExecutable"];

NSString *tmpPath = [[WQPathUtilities documentsDirectory] stringByDeletingLastPathComponent];

NSString *appPath = [[tmpPath stringByAppendingPathComponent:excutableName]

stringByAppendingPathExtension:@"app"];

NSString *sigPath = [[appPath stringByAppendingPathComponent:@"_CodeSignature"]

stringByAppendingPathComponent:@"CodeResources"];

return sigPath;

}

+ (NSString *)binaryPath

{

NSString *excutableName = [[NSBundle mainBundle] infoDictionary][@"CFBundleExecutable"];

NSString *tmpPath = [[WQPathUtilities documentsDirectory] stringByDeletingLastPathComponent];

NSString *appPath = [[tmpPath stringByAppendingPathComponent:excutableName]

stringByAppendingPathExtension:@"app"];

NSString *binaryPath = [appPath stringByAppendingPathComponent:excutableName];

return binaryPath;

}

@end

md5方法:

#import "CommonCrypto/CommonDigest.h"

+(NSString *)md5WithString:(NSString *)string

{

const charchar *cStr = [string UTF8String];

unsigned char result[CC_MD5_DIGEST_LENGTH];

CC_MD5(cStr, strlen(cStr), result);

return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",

result[0], result[1], result[2], result[3],

result[4], result[5], result[6], result[7],

result[8], result[9], result[10], result[11],

result[12], result[13], result[14], result[15]

] lowercaseString];

}

這樣做就 100% 安全了嗎侣签?

答案是:不……

所謂魔高一尺塘装,道高一丈,不過(guò)也能阻止一些低級(jí)的 hack 手段了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末影所,一起剝皮案震驚了整個(gè)濱河市蹦肴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猴娩,老刑警劉巖阴幌,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異卷中,居然都是意外死亡矛双,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蟆豫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)议忽,“玉大人,你說(shuō)我怎么就攤上這事十减≌恍遥” “怎么了愤估?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)速址。 經(jīng)常有香客問(wèn)我玩焰,道長(zhǎng),這世上最難降的妖魔是什么芍锚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任昔园,我火速辦了婚禮,結(jié)果婚禮上并炮,老公的妹妹穿的比我還像新娘默刚。我一直安慰自己,他們只是感情好渣触,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布羡棵。 她就那樣靜靜地躺著,像睡著了一般嗅钻。 火紅的嫁衣襯著肌膚如雪皂冰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天养篓,我揣著相機(jī)與錄音秃流,去河邊找鬼。 笑死柳弄,一個(gè)胖子當(dāng)著我的面吹牛舶胀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碧注,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嚣伐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了萍丐?” 一聲冷哼從身側(cè)響起轩端,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逝变,沒(méi)想到半個(gè)月后基茵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壳影,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年拱层,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宴咧。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡根灯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箱吕,我是刑警寧澤芥驳,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站茬高,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏假抄。R本人自食惡果不足惜怎栽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宿饱。 院中可真熱鬧熏瞄,春花似錦、人聲如沸谬以。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)为黎。三九已至邮丰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铭乾,已是汗流浹背剪廉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炕檩,地道東北人斗蒋。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像笛质,于是被迫代替她去往敵國(guó)和親泉沾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • 注:原文---念茜的博客 我們把自己的程序發(fā)布到app store妇押,但是不能保證每一個(gè)用戶都是從app store...
    richar_閱讀 565評(píng)論 0 0
  • /**ios常見(jiàn)的幾種加密方法: 普通的加密方法是講密碼進(jìn)行加密后保存到用戶偏好設(shè)置( [NSUserDefaul...
    彬至睢陽(yáng)閱讀 2,912評(píng)論 0 7
  • 先說(shuō)一下:MD5加密可破解,每一個(gè)原密碼對(duì)應(yīng)一個(gè)不變的MD5加密的密碼效果: MD5加密demo 密碼: c1j2...
    IIronMan閱讀 2,393評(píng)論 2 32
  • # ios常用的一些判斷 ## 根據(jù)日起計(jì)算是周幾 ``` + (NSString*)weekdayStringF...
    呵呵你妹521閱讀 1,013評(píng)論 1 4
  • 技術(shù)無(wú)極限跷究,從菜鳥(niǎo)開(kāi)始,從源碼開(kāi)始舆吮。 由于公司目前項(xiàng)目還是用OC寫的項(xiàng)目揭朝,沒(méi)有升級(jí)swift 所以暫時(shí)SDWebI...
    充滿活力的早晨閱讀 12,622評(píng)論 0 2