亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS安全防護系列之ptrace反調試與匯編調用系統方法詳解

2019-10-21 18:40:46
字體:
來源:轉載
供稿:網友

關于系統調用

ptrace是一個系統調用。那系統調用是什么東東呢?它是一個系統提供的很強大的底層服務。用戶層的框架是構建在system call之上的。

macOS Sierra大約提供了500個系統調用。通過以下命令來了解你系統上的系統調用的個數:

? ~ sudo dtrace -ln 'syscall:::entry' | wc -l

這個命令使用了另外一個更強大的工具叫DTrace,暫不詳談它。

一 lldb調試原理:debugserver

1、xcode的lldb之所以能調試app,是因為手機運行app,lldb會把調試指令發給手機的debugServer; debugServer是由Xcode第一次運行程序給安裝到手機上。

Xcode上查看debugserver:

按住command鍵點擊Xcode,找到xcode.app顯示包內

容/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/11.3 找到DeveloperDiskImage.dmg 里的usr -> bin -> debugserver

機的根目錄下的 Developer -> usr -> bin 里能找到debugserver,越獄手機可以查看

2、越獄環境下,lldb連接手機的debugserver,然后就可以通過debugserver調試某個app

3、debugserver如何調試app?

debugserver通過ptrace函數調試app

ptrace是系統函數,此函數提供一個進程去監聽和控制另一個進程,并且可以檢測被控制進程的內存和寄存器里面的數據。ptrace可以用來實現斷點調試和系統調用跟蹤。

推薦書單:《程序員的自我修養》

二 利用ptrace防護debugserver

把ptrace.h導入工程

ptrace頭文件不能直接導入app工程,可以新建命令行工程,然后#import <sys/ptrace.h>進入到ptrace.h,把內容全部復制到自己工程中新建的header文件MyPtrace.h中,那么自己的工程想調用ptrace就可以導入MyPtrace.h直接進行調用

ptrace防護

ptrace(<#int _request#>, <#pid_t _pid#>, <#caddr_t _addr#>, <#int _data#>)有四個參數

參數1:要做的事情

參數2:要控制的進程ID

參數3:地址

參數4:數據

參數3和參數4都由 參數1決定 參數1要傳遞的地址和數據

參數1的列表:

#define    PT_TRACE_ME    0    /* child declares it's being traced */
#define    PT_READ_I    1    /* read word in child's I space */
#define    PT_READ_D    2    /* read word in child's D space */
#define    PT_READ_U    3    /* read word in child's user structure */
#define    PT_WRITE_I    4    /* write word in child's I space */
#define    PT_WRITE_D    5    /* write word in child's D space */
#define    PT_WRITE_U    6    /* write word in child's user structure */
#define    PT_CONTINUE    7    /* continue the child */
#define    PT_KILL        8    /* kill the child process */
#define    PT_STEP        9    /* single step the child */
#define    PT_ATTACH    ePtAttachDeprecated    /* trace some running process */
#define    PT_DETACH    11    /* stop tracing a process */
#define    PT_SIGEXC    12    /* signals as exceptions for current_proc */
#define PT_THUPDATE    13    /* signal for thread# */
#define PT_ATTACHEXC    14    /* attach to running process with signal exception */

#define    PT_FORCEQUOTA    30    /* Enforce quota for root */
#define    PT_DENY_ATTACH    31

#define    PT_FIRSTMACH    32    /* for machine-specific requests */

要做到反調試,只需參數1為PT_DENY_ATTACH, 參數2為自己

#import "MyPtrace.h" //app反調試防護 ptrace(PT_DENY_ATTACH, 0, 0, 0);

這樣你的app就不可以用Xcode調試了

三 反ptrace ,讓別人的ptrace失效

就是如果別人的的app進行了ptrace防護,那么你怎么讓他的ptrace不起作用,進行調試他的app呢?

由于ptrace是系統函數,那么我們可以用fishhook來hook住ptrace函數,然后讓他的app調用我們自己的ptrace函數

  • 注入動態庫meryinDylib
  • 在meryinDylib中hook住ptrace函數
#import "fishhook.h"#import "MyPtrace.h"@implementation meryinDylibint (*ptrace_p)(int _request, pid_t _pid, caddr_t _addr, int _data);int myPtrace(int _request, pid_t _pid, caddr_t _addr, int _data){ if (_request != PT_DENY_ATTACH) {  return ptrace_p(_request,_pid,_addr,_data); } return 0;}+ (void)load{ struct rebinding ptraceBind; //函數的名稱 ptraceBind.name = "ptrace"; //新的函數地址 ptraceBind.replacement = myPtrace; //保存原始函數地址的變量的指針 ptraceBind.replaced = (void *)&ptrace_p; //定義數組 struct rebinding rebs[] = {ptraceBind}; /*  arg1 : 存放rebinding結構體的數組  arg2 : 數組的長度  */ rebind_symbols(rebs, 1);}

四 針對三,要想別人hook自己的app的ptrace失效

思路:別人hook ptrace的時候,自己的ptrace已經調用

想要自己函數調用在最之前:自己寫一個framework庫

在庫中寫入ptrace(PT_DENY_ATTACH, 0, 0, 0);

庫加載順序:

自己寫的庫>別人注入的庫

自己的庫加載順序:按照 Link Binary Libraries的順序加載

iOS,安全防護,ptrace,反調試,匯編

五 針對四 進行反反調試

就算他的ptrace自己fishhook不到,可以通過修改macho的二進制讓他的ptrace失效,然后進行調試.

1、用MonkeyDev打開,下符號斷點trace,然后lldb調試bt,找到ptrace的庫antiDebug以及其地址0x0000000102165d98,再image list找到antiDebug的地址0x0000000102160000,那么真實地址為0x5d98;

2、然后顯示包內容,在Frameworks中,找到antiDebug庫的macho,用hopper打開,找到0x5d98

iOS,安全防護,ptrace,反調試,匯編

3、更改二進制

可以直接在bl __NSlog之后直接函數結束,去除bl __ptrace,不調用ptrace函數

復制ptrace下一條指令0000000000005d94 bl imp___stubs__ptrace,點擊bl __NSlog的下一行然后Alt+a,寫入代碼bl 0x 0000000000005d94

iOS,安全防護,ptrace,反調試,匯編

4、導出新的macho

File --> Produce New Executable

然后再運行就可以了

六 針對五 我不想暴露自己的ptrace等系統方法,不想被符號斷點斷住,可以采用匯編進行調用ptrace

//安全防護-反調試 asm(  "mov x0,#31/n"  "mov x1,#0/n"  "mov x2,#0/n"  "mov x3,#0/n"  "mov w16,#26/n" //26是ptrace  "svc #0x80" //0x80觸發中斷去找w16執行 );

去哪里找26就是ptrace?

#import <sys/syscall.h>中有500多個系統函數,都有其編號

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美美女操人视频| 国产精品成人av在线| 国产精品男人爽免费视频1| 成人国产亚洲精品a区天堂华泰| 国产精品视频免费在线观看| 久久久视频精品| 欧美精品激情在线| 亚洲欧美精品伊人久久| 在线观看精品国产视频| 欧美大片在线看免费观看| 国产精品成人观看视频国产奇米| 欧美理论电影在线播放| 国产精品免费久久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 庆余年2免费日韩剧观看大牛| 毛片精品免费在线观看| 亚洲激情国产精品| 欧美视频在线看| 国产视频精品免费播放| 91久久精品在线| 国产啪精品视频| 成人午夜一级二级三级| 亚洲福利视频在线| 成人欧美一区二区三区在线| 亚洲桃花岛网站| 欧美亚洲视频在线观看| 日韩亚洲欧美中文高清在线| 欧美成人免费在线观看| 亚洲欧洲高清在线| 菠萝蜜影院一区二区免费| 亚洲美女中文字幕| 91精品久久久久久久久中文字幕| 久久久精品国产一区二区| 国产精品户外野外| 日韩精品有码在线观看| 久久久影视精品| 国产一区二区三区在线观看网站| 国产精品福利网| 欧美日韩免费一区| 日韩成人性视频| 久久国产精品99国产精| 91大神在线播放精品| 在线视频中文亚洲| 精品亚洲一区二区三区在线播放| 91精品国产综合久久久久久蜜臀| 4p变态网欧美系列| 欧美日韩aaaa| 国产精品69av| 国产精品女人网站| 欧美日韩中文字幕日韩欧美| 黑人巨大精品欧美一区二区一视频| 久久香蕉国产线看观看av| 久久久久国产精品免费| 在线精品国产欧美| 久久精品国产亚洲精品| 日韩av电影手机在线观看| 亚洲国产成人在线播放| 亚洲人成在线观| 亚洲欧美日韩在线高清直播| 尤物精品国产第一福利三区| 日韩高清电影免费观看完整| 亚洲石原莉奈一区二区在线观看| 国产日本欧美一区| 国产99久久精品一区二区| 国产精品久久久久久影视| 亚洲精品美女在线观看播放| 欧美成人网在线| 欧美中文字幕在线视频| 国产精品91免费在线| 亚洲精品白浆高清久久久久久| 日本久久中文字幕| 国产精品18久久久久久首页狼| 精品国产成人在线| 亚洲伊人久久综合| 精品亚洲一区二区三区| 久久亚洲电影天堂| 欧美另类暴力丝袜| 日韩在线中文字幕| 日韩精品一区二区视频| 激情成人中文字幕| 国产小视频91| 亚洲精品久久久一区二区三区| 精品视频久久久| 精品丝袜一区二区三区| 日韩欧美在线第一页| 性欧美暴力猛交69hd| 97在线日本国产| 欧美最近摘花xxxx摘花| 欧美午夜激情在线| 国产精品jizz在线观看麻豆| 欧美精品免费看| 日韩成人中文电影| 国产91在线播放精品91| 亚洲综合日韩中文字幕v在线| 日韩av快播网址| 91精品国产自产在线| 欧洲s码亚洲m码精品一区| 91精品国产777在线观看| 久久夜色精品国产欧美乱| 日本久久久a级免费| 欧美激情免费视频| 午夜免费日韩视频| 国产美女高潮久久白浆| 久久久精品在线观看| 国产一区二区三区丝袜| 亚洲欧美在线看| 一级做a爰片久久毛片美女图片| 成人黄色生活片| 日韩中文字幕视频| 久久成人国产精品| 中文字幕在线国产精品| 在线观看日韩欧美| 亚洲一区二区三区xxx视频| 亚洲精品一区二区久| 国产精品户外野外| 亚洲精品国产suv| 一区二区三区天堂av| 97超级碰碰碰久久久| 日韩精品在线播放| 成人免费视频xnxx.com| 国产精品视频xxx| 国内精品小视频在线观看| 国产精品麻豆va在线播放| 日韩欧美aⅴ综合网站发布| 成人免费激情视频| 久久91精品国产91久久跳| 2019亚洲男人天堂| 日韩中文字幕视频在线观看| 国产精品免费久久久| 性视频1819p久久| 欧美激情综合色综合啪啪五月| 国产在线一区二区三区| 色综合视频一区中文字幕| 欧美日在线观看| 亚洲永久在线观看| 国产精品色午夜在线观看| 亚洲成人在线视频播放| 亚洲在线观看视频网站| 在线亚洲国产精品网| 亚洲精品视频久久| 亚洲成色777777在线观看影院| 国产精品第一第二| 尤物tv国产一区| 日韩成人中文字幕在线观看| 亚洲一区二区国产| 亚洲最大成人在线| 国产精品免费一区| 久久国产精品免费视频| 欧美中文字幕在线| 一区国产精品视频| 亚洲九九九在线观看| 狠狠躁夜夜躁久久躁别揉| 欧洲亚洲妇女av| 亚洲第一男人av| 色久欧美在线视频观看| 日本不卡免费高清视频| 亚洲精品乱码久久久久久金桔影视| 91精品久久久久久综合乱菊| 98精品国产高清在线xxxx天堂| 米奇精品一区二区三区在线观看| 正在播放亚洲1区| 一本色道久久88综合日韩精品| 中日韩美女免费视频网址在线观看| 尤物tv国产一区|