風險描述
攻擊者可以利用gdb、ida、ptrace等偵錯程式跟蹤執行的目標程式,檢視、修改記憶體中的**和資料,甚至分析/篡改程式的業務邏輯,對客戶關鍵資料或者伺服器進行惡意攻擊,例如修改客戶端業務操作的資料,比如轉賬賬號、金額等,導致使用者的損失。修復建議
【開發者修復】整合native層的反除錯保護功能,避免應用被xcode、ida等工具除錯,進而保護業務安全。修復操作
[反除錯]
#import #import typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr ,int _data);
#if !defined(pt_dent_attach)
#define pt_dent_attach 31
#endif
void disable_gdb()
int main(int argc, char * ar**)
}風險描述
應用程式執行時會在記憶體中產生一些敏感資料,比如金鑰key、本地解密資料、通訊解密資料,攻擊者可以利用frida等工具,對程式關鍵函式注入**,通過破壞業務邏輯可以獲取明文資料或直接對伺服器發起攻擊。修復建議
【開發者修復】整合防注入/防hook保護功能,避免應用被注入/hook。修復操作
[fishhook]
#import "fishhook.h"
#pragma mark ---- 防護**------
//函式指標變數
void(*exchangep)(method _nonnull m1, method _nonnull m2);
//static nsmutablearray *methods;
void myexchange(method _nonnull m1, method _nonnull m2)
// sel orimethodname = method_getname(m1);
sel orimethodname2 = method_getname(m2);
// imp mymethodimp = method_getimplementation(m1);
// imp mymethodimp2 =method_getimplementation(m2);
// 先從專案中找到目前全部的 method_exchangeimplementations 方法
// 專案中沒有的就是不安全的,直接exit。
nsstring *newmethod = nsstringfromselector(orimethodname2);
// [methods addobject:newmethod];
// htlog(@"%@",methods);
nsarray *wzarr = @[
@"af_resume", @"af_suspend",@"sd_settext:",@"sd_layoutsubviews",
@"sd_button_layoutsubviews",@"sd_reloaddata",@"sd_reloadrowsatindexpaths:withrowanimation:",
@"sd_deleterowsatindexpaths:withrowanimation:",
@"mj_reloaddata",
@"mj_reloaddata",
@"fd_reloaddata",
@"fd_insertsections:withrowanimation:",
@"fd_deletesections:withrowanimation:",
@"fd_reloadsections:withrowanimation:",
@"fd_movesection:tosection:",
@"fd_insertrowsatindexpaths:withrowanimation:",
@"fd_deleterowsatindexpaths:withrowanimation:",
@"fd_reloadrowsatindexpaths:withrowanimation:",
@"fd_moverowatindexpath:toindexpath:"];
if (![wzarr containsobject:newmethod])
}+(void)load;
rebind_symbols(rebs, 1);}
Nginx加固 Tomcat加固
二 tomcat加固 nginx禁止顯示版本有兩種方法 vim usr local nginx conf nginx.conf server tokens off src core nginx.h define nginx version 1.9.15 define nginx ver nginx ...
iOS工程新增Unity工程
我的需求是 在現有的ios工程中,新增unity工程,還是以原來的ios工程為主,在裡面的某個地方,在需要的時候再呼叫unity工程,並且盡可能少的影響到現有工程。本來,是按這位仁兄的帖子做 結果發現編譯通過不了,試了很多方式都不行。然後,又按照另一位仁兄都方法 還是有問題,這個時候我就停下來想,到...
iOS工程改名
很多小專案,內容基本一致,細微差距,又能封裝,修改工程比較麻煩 正常的操作 修改ios工程名 import os def deal file content file path,old name,new name 處理替換的檔案 try if file path.endswith ds store ...