在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ iOS/ 數(shù)據(jù)擦除
Hack 實戰(zhàn)——支付寶 App 手勢密碼校驗欺騙
使用 Reveal 分析他人 App
后臺 daemon 非法竊取用戶 iTunesstore 信息
使用 iNalyzer 分析應用程序
越獄檢測的攻與防
使用 introspy 追蹤分析應用程序
廢除應用程序的 ASLR 特性
使用 Cycript 修改支付寶 App 運行時
敏感邏輯的保護方案
Fishhook
使用 class-dump-z 分析支付寶 App
static 和被裁的符號表
iOS7 的動態(tài)庫注入
二進制和資源文件自檢
Hack 實戰(zhàn)——探究支付寶 App 手勢密碼
使用 Keychain-Dumper 導出 keychain 數(shù)據(jù)
數(shù)據(jù)擦除
Hack 實戰(zhàn)——解除支付寶 App 手勢解鎖錯誤次數(shù)限制
Objective-C 代碼混淆
阻止 GDB 依附
基于腳本實現(xiàn)動態(tài)庫注入
Hack 必備的命令與工具
鍵盤緩存與安全鍵盤
數(shù)據(jù)保護 API

數(shù)據(jù)擦除

對于敏感數(shù)據(jù),我們不希望長時間放在內(nèi)存中,而希望使用完后立即就被釋放掉。

但是不管是 ARC 還是 MRC,自動釋放池也有輪循工作周期,我們都無法控制內(nèi)存數(shù)據(jù)被擦除的準確時間,讓 hackers 們有機可乘。 本文介紹一個小技巧——及時數(shù)據(jù)擦除。

假如一個 View Controller A的一個數(shù)據(jù)被綁在一個 property 上,

@interface WipingMemoryViewController : UIViewController  

@property (nonatomic,copy) NSString *text;  
@end  

當 A push 到另外一個 View Controller B 時,該數(shù)據(jù)還是有可能被讀到的

WipingMemoryViewController *lastController = (WipingMemoryViewController *)self.navigationController.viewControllers[0];  
NSLog(@"text = %@",lastController.text);  

于是,“用后即擦”變得十分必要:

_text = [[NSString alloc]initWithFormat:@"information"];   
NSLog(@"Origal string = %@",_text);  
//do something...  
charchar *string = (charchar *)CFStringGetCStringPtr((CFStringRef)_text, CFStringGetSystemEncoding());  
memset(string, 0, [_text length]);  
NSLog(@"final text = %@",_text); 

Log 輸出如下:

WipingMemory[2518:70b] Origal string = information  
WipingMemory[2518:70b] final text =  

可以看到,我們想要保護的數(shù)據(jù),被有效的擦除了。

還有提個醒,如果是這樣

_text = @"information";

創(chuàng)建的字符串,是會被分配到 data 區(qū),而是無法修改的。

如果有興趣也有閑心,可以試試運行下面的代碼,有彩蛋哦:

_text = @"information";  
memset((__bridge voidvoid *)(_text), 0, _text.length - 1);  
NSString *myString = [[NSString alloc]initWithFormat:@"information"];  
NSLog(@"Origal text : %@ \n",myString);  

編譯器把兩個 information 的省略到一個地址了~