亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS如何加密字符串及隱藏系統函數

發布時間:2021-08-13 09:32:07 來源:億速云 閱讀:251 作者:小新 欄目:移動開發

這篇文章主要為大家展示了“iOS如何加密字符串及隱藏系統函數”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“iOS如何加密字符串及隱藏系統函數”這篇文章吧。

一 字符串加密

如果你使用對稱加密,你的秘鑰很可能被macho文件暴露

iOS如何加密字符串及隱藏系統函數

要想字符串不進常量區,可以先用一個字符去異或,然后再異或回來,字符串直接換算,就不會被macho暴露。

//測試環境
static NSString * KEY(){
 unsigned char key[] = {
  (pw_encrypt_key ^ 'a'),(pw_encrypt_key ^ '2'),(pw_encrypt_key ^ 's'),(pw_encrypt_key ^ '5'),(pw_encrypt_key ^ '4'),(pw_encrypt_key ^ 'b'),
  (pw_encrypt_key ^ 'e'),(pw_encrypt_key ^ '5'),(pw_encrypt_key ^ 'f'),(pw_encrypt_key ^ '3'),(pw_encrypt_key ^ 'f'),(pw_encrypt_key ^ '4'),
  (pw_encrypt_key ^ 'f'),
  (pw_encrypt_key ^ '\0')
 };
 unsigned char *p = key;
 while (((*p) ^= pw_encrypt_key) != '\0') {
  p++;
 }
 return [NSString stringWithUTF8String:(const char *)key];
}

二 隱藏系統函數

當你調用系統函數加密是,macho是可以找到對應的函數跳轉的:

iOS如何加密字符串及隱藏系統函數

要想隱藏系統函數,可以直接從庫里面找到函數句柄,然后調用函數指針進行加密。

1、找到庫

下符號斷點,找到自己的加密函數CCCryptorCreate;

iOS如何加密字符串及隱藏系統函數

然后lldb調試:(lldb) image list;

找到libcommonCrypto.dylib庫在:[ 39] 50EEB933-DCEB-3AA2-8A43-DD3A791139CE 0x0000000182e1e000 /Users/mac/Library/Developer/Xcode/iOS DeviceSupport/11.3 (15E216)/Symbols/usr/lib/system/libcommonCrypto.dylib

libcommonCrypto.dylib的位置是:/usr/lib/system/libcommonCrypto.dylib

2、獲取句柄

#import <dlfcn.h>
//句柄
 void * handle = dlopen("/usr/lib/system/libcommonCrypto.dylib",RTLD_LAZY);

RTLD_LAZY:懶加載表

3、獲取加密函數

 unsigned char str[] = {
  ('a' ^ 'C'),
  ('a' ^ 'C'),
  ('a' ^ 'C'),
  ('a' ^ 'r'),
  ('a' ^ 'y'),
  ('a' ^ 'p'),
  ('a' ^ 't'),
  ('a' ^ 'o'),
  ('a' ^ 'r'),
  ('a' ^ 'C'),
  ('a' ^ 'r'),
  ('a' ^ 'e'),
  ('a' ^ 'a'),
  ('a' ^ 't'),
  ('a' ^ 'e'),
  ('a' ^ '\0')
 };
 unsigned char * p = str;
 while (((*p) ^= 'a') != '\0') p++;
CCCryptorStatus (* CCCryptorCreate_p)(
         CCOperation op,    /* kCCEncrypt, etc. */
         CCAlgorithm alg,   /* kCCAlgorithmDES, etc. */
         CCOptions options,   /* kCCOptionPKCS7Padding, etc. */
         const void *key,   /* raw key material */
         size_t keyLength,
         const void *iv,    /* optional initialization vector */
         CCCryptorRef *cryptorRef) /* RETURNED */
 __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0) = dlsym(handle, (const char *)str);

4、用函數指針加密

 status = CCCryptorCreate_p( kCCEncrypt, algorithm, options,
         [keyData bytes], [keyData length], [ivData bytes],
         &cryptor );

結果如下

iOS如何加密字符串及隱藏系統函數

以上是“iOS如何加密字符串及隱藏系統函數”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临西县| 新沂市| 正阳县| 巧家县| 论坛| 巴里| 尼玛县| 甘泉县| 措美县| 平塘县| 宜阳县| 黄骅市| 南开区| 扎鲁特旗| 永宁县| 江口县| 揭东县| 彭阳县| 兴化市| 新竹市| 江源县| 黄大仙区| 揭西县| 光泽县| 瑞安市| 临西县| 淳化县| 孟村| 垦利县| 兴安县| 东光县| 浠水县| 科尔| 庆安县| 阿拉善盟| 读书| 五家渠市| 宜兰市| 青海省| 扶绥县| 乌拉特中旗|