下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】iOS安全防護(hù)之重簽名防護(hù)與sysctl反調(diào)試的示例分析
一重簽名防護(hù)1、查看證明組織單位/upload/information/20200623/126/119310.png2、利用簽名信息進(jìn)行重簽名防護(hù)void
checkCodesign(NSString
*id){
//
描述文件路徑
NSString
*embeddedPath
=
[[NSBundle
mainBundle]
pathForResource:@"embedded"
ofType:@"mobileprovision"];
//
讀取application-identifier
注意描述文件的編碼要使用:NSASCIIStringEncoding
NSString
*embeddedProvisioning
=
[NSString
stringWithContentsOfFile:embeddedPath
encoding:NSASCIIStringEncoding
error:nil];
NSArray
*embeddedProvisioningLines
=
[embeddedProvisioning
componentsSeparatedByCharactersInSet:[NSCharacterSet
newlineCharacterSet]];
for
(int
i
=
0;
i
<
embeddedProvisioningLines.count;
i++)
{
if
([embeddedProvisioningLines[i]
rangeOfString:@"application-identifier"].location
!=
NSNotFound)
{
NSInteger
fromPosition
=
[embeddedProvisioningLines[i+1]
rangeOfString:@"<string>"].location+8;
NSInteger
toPosition
=
[embeddedProvisioningLines[i+1]
rangeOfString:@"</string>"].location;
NSRange
range;
range.location
=
fromPosition;
range.length
=
toPosition
-
fromPosition;
NSString
*fullIdentifier
=
[embeddedProvisioningLines[i+1]
substringWithRange:range];
NSArray
*identifierComponents
=
[fullIdentifier
componentsSeparatedByString:@"."];
NSString
*appIdentifier
=
[identifierComponents
firstObject];
//
對比簽名ID
if
(![appIdentifier
isEqual:id])
{
//exit
asm(
"mov
X0,#0\n"
"mov
w16,#1\n"
"svc
#0x80"
);
}
break;
}
}
}二sysctl檢測是否被調(diào)試#import
<sys/sysctl.h>
bool
checkDebugger(){
//控制碼
int
name[4];//放字節(jié)碼-查詢信息
name[0]
=
CTL_KERN;//內(nèi)核查看
name[1]
=
KERN_PROC;//查詢進(jìn)程
name[2]
=
KERN_PROC_PID;
//通過進(jìn)程id查進(jìn)程
name[3]
=
getpid();//拿到自己進(jìn)程的id
//查詢結(jié)果
struct
kinfo_proc
info;//進(jìn)程查詢信息結(jié)果
size_t
info_size
=
sizeof(info);//結(jié)構(gòu)體大小
int
error
=
sysctl(name,
sizeof(name)/sizeof(*name),
&info,
&info_size,
0,
0);
assert(error
==
0);//0就是沒有錯(cuò)誤
//結(jié)果解析
p_flag的第12位為1就是有調(diào)試
//p_flag
與
P_TRACED
=0
就是有調(diào)試
return
((info.kp_proc.p_flag
&
P_TRACED)
!=0);
}if
(checkDebugger())
{
asm("mov
X0,#0\n"
"mov
w16,#1\n"
"svc
#0x80"
);
}三針對二破解sysctl//原始函數(shù)的地址
int
(*sysctl_p)(int
*,
u_int,
void
*,
size_t
*,
void
*,
size_t);
//自定義函數(shù)
int
mySysctl(int
*name,
u_int
namelen,
void
*info,
size_t
*infosize,
void
*newinfo,
size_t
newinfosize){
if
(namelen
==
4
&&
name[0]
==
CTL_KERN
&&
name[1]
==
KERN_PROC
&&
name[2]
==
KERN_PROC_PID
&&
info
&&
(int)*infosize
==
sizeof(struct
kinfo_proc))
{
int
err
=
sysctl_p(name,
namelen,
info,
infosize,
newinfo,
newinfosize);
//拿出info做判斷
struct
kinfo_proc
*
myInfo
=
(struct
kinfo_proc
*)info;
if((myInfo->kp_proc.p_flag
&
P_TRACED)
!=
0){
//使用異或取反
myInfo->kp_proc.p_flag
^=
P_TRACED;
}
return
err;
}
return
sysctl_p(name,
namelen,
info,
infosize,
newinfo,
newinfosize);
}
+(void)load
{
//交換
rebind_symbols((str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游客服人員聘用合同
- 城中村租賃合同:服裝店租賃細(xì)則
- 廣告創(chuàng)意策劃師聘用合同
- 通訊設(shè)備銷售代表招聘合同
- 農(nóng)莊租賃合同:農(nóng)業(yè)種植基地
- 商業(yè)綜合體自來水安裝協(xié)議
- 鋁合金風(fēng)力發(fā)電設(shè)備生產(chǎn)合同
- 可持續(xù)旅游合同管理辦法
- 電信工程腳手架施工合同范本
- 珠寶設(shè)計(jì)代理協(xié)議
- 2024年度石料供應(yīng)框架協(xié)議
- 2024年度技術(shù)開發(fā)合同違約處理3篇
- 辦公家具無償租賃合同
- 臥式橢圓封頭儲(chǔ)罐液位體積對照表
- 《家庭安全用電培訓(xùn)》課件
- 人教版數(shù)學(xué)一年級(jí)上冊 前后上下左右專項(xiàng)練習(xí)題(試題)
- 【初中道法】樹立正確的人生目標(biāo)(課件)-2024-2025學(xué)年七年級(jí)道德與法治上冊(統(tǒng)編版2024)
- 全國自考社會(huì)經(jīng)濟(jì)調(diào)查方法與應(yīng)用真題
- 鋼結(jié)構(gòu)施工方案編制指南
- 中醫(yī)婦科疾病的治療(完美版)課件
- 山東省青島市2024-2025學(xué)年七年級(jí)上學(xué)期11月期中英語試題
評論
0/150
提交評論