创建子工程很简单: 1 假设你已经有了自己的工程demo.xcodeproj,首先我们需要创建一个子工程,(File->new->project),我们要选择静态库。如图 ? 点击下一步,给子工程起名字:subProject ? 点击下一步:选择Add to自己的工程 ? 到此,第一步就结束了,我们创建了一个子工程,而且也添加到了自己的工程里面,但是,这样在自己工程中还是无法引用子工程的类。我们还需要设置一下自己工程的环境变量。 5 如果存在category的时候,在demo工程Other Linker Flags里面添加编译的命令: 注意:在ios5以及以上版本中,引入别的工程(如上)或者静态库, 并且StoryBoards 上面的意思是说 对于64位操作系统或者ios系统,-Objc存在一个bug,就是只包含categories ,而没有任何class的静态库,是不会被加载进来。
如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生。 安装的具体过程如下所示: image.png 2.安装ldid sudo brew install ldid 在Theos开发插件中,iOS文件的签名是使用ldid工具来完成的,也就是说ldid取代了 在选择模板后,紧接着会让你做一系列的操作,这一些列的操作和Xcode新建iOS工程的步骤类似。 3.编译打包前的准备工作 export SDKVERSION=9.3 export THEOS_DEVICE_IP=ios_device_ip 接着我们要做一些编译打包前的准备工作,SDKVERSION 因为我本地的Xcode中是iOS9.3的SDK,所以下方指定的SDKVESION是9.3。 ?
本篇文章是我在学习逆向工程时整理的逆向工程工具集 只作为记录使用 并不是详细的教程 阅读本篇教程需要你有一定逆向工程知识 一,Cycript 介绍 iOS运行时工具 可hook运行时进程 并提供了以下能力 New password: Retype new password: root# 三,theos iOS越狱程序开发框架 简化了编写越狱程序的流程 四,lldb + debugserver iOS远程调试APP 1、将debug server文件从手机拷贝到mac scp root@192.168.31.154:/Developer/usr/bin/debugserver ~/ 2,瘦身 / 5.开始咂壳 DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/557619D0-29AC-40DD-9266-8A0154F634AA 1.iOS-Runtime-Headers: https://github.com/nst/iOS-Runtime-Headers 2.OSXRuntimeBrowser: https://github.com
1.创建一个简单的工程 创建工程SimpleAppDemo,里面只有一个按钮,点击按钮弹出一个Alert。 Logos除了以上hook,end,orig,new这几种关键字,还有: %subclass:增加一个类 %log:打印,类似NSLog %group: 给代码分组,可以用于在不同环境加载不同的代码,比如iOS8 系列干货持续更新中(记得关注我哦): iOS逆向(1)-密码学(RSA) iOS逆向(2)-密码学(Hash&对称加密) iOS逆向(3)-APP重签名 iOS逆向(4)-代码注入,非越狱窃取微信密码 iOS逆向(5)-不知MachO怎敢说自己懂DYLD iOS逆向(6)-从fishhook看Runtime,Hook系统函数 iOS逆向(7)-LLDB,自制LLDB脚本,窜改微信红包金额 iOS 逆向(8)-Monkey、Logos iOS逆向(9)-Cycript,动态分析APP利器
砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程。 当然,在iOS9.2.1上的越狱设备执行上述命令会报错,可能是目前Cycript这个强大的工具还不支持iOS9.2吧。所以我是在iOS7.2上做的该实验。
如果新建工程的话,会有很多麻烦的问题: 1.虚拟文件夹无法拖拽到新的工程,导致文件杂乱的混在一起难以按模块区分(如果都是实体文件夹可忽略) 2.plis文件需要自己慢慢配置,容易遗漏 3.第三方的link 库需要自己一个一个添加,很多设置需要修改,容易遗漏 4.资源文件需要自己拖拽 新建项目虽然勉强完成修改工程名的过程,但是很多细节容易遗漏,导致后面开发过程中出现Bug很是费事,于是就自己参考网上资料,自己在现有的工程上面直接修改名字 ,步骤如下: 1.修改工程名字 .打开工程 点击工程名称 回车 直接修改 .此时会弹出一个对话框,点击Rename 2. 修改scheme名称 .点击Xcode上面的工具栏Product->Sechme->Edit Sechme .弹出对话框 会车直接修改 修改完成之后 点击Close 3.修改目录名称 .点击工程内需要修改名字的目录
workspace中主工程文件GovCn目录没了 吓得我赶紧打开主GovCn.xcodeproj文件,结果。。。 暂停Bug 知识点:Xcode的工程文件是 工程名.xcodeproj,而它其实是个package目录,通过显示包内容,可以查看到它内部主要有project.pbxproj 和 xcuserdata。 而project.pbxproj 是工程描述文件,描述了工程里的源码文件、schema设置等。 ------- 摘自iOS 开发 xcode中的project.pbxproj--深入剖析 容我冷静一下 冷静想了一下,应该是因为我俩同时提交了图片,工程 GovCn.xcodeproj 文件冲突了 打开之后,工程里关于图片的配置信息都没了,但图片源文件还存在源目录下,重新导入一下就OK了。
8.Go工程管理 1.工作区介绍 通过前面函数的学习,我们能够体会到函数的优势,就是可以将不同的功能放在不同的函数中实现,主函数(main( ))可以直接调用。 这就涉及到项目的工程管理也就是怎样对项目中的文件进行管理。 为了更好的管理项目中的文件,要求将文件都要放在相应的文件夹中。 以上目录称为工作区,工作区其实就是一个对应于特定工程的目录。
iOS 8 之后,UINavigationController 为开发者提供了一些好用的功能,这些功能以前实现起来可能比较麻烦,而现在只需要一个属性就搞定了。 1.
UIBlurEffectStyleExtraLight, UIBlurEffectStyleLight, UIBlurEffectStyleDark } NS_ENUM_AVAILABLE_IOS (8_0); UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; UIVisualEffectView
整个文件会被引入到iOS工程的各个*.xcconfig配置文件中。这些配置信息,在xcode runscript中引入的flutter编译嵌入脚本xcode_backend.sh中会使用到。 image.png 混编方案 方案大概的解决方法就是: 完全脱离Flutter环境:(图中实线流程部分) 利用脚本将所有的依赖编译结果从Flutter工程中剥离出来,放到iOS工程目录下。 直接依赖Flutter工程:(图中虚线流程部分) 直接依赖时,pod对Flutter的依赖都直接指向了Flutter工程;另外就是xcode_backend.sh会去重新编译Flutter代码,Flutter 方案存在的问题 直接依赖Flutter工程的方式,这个大同小异,都是直接或间接指向Flutter工程。这里重点讨论完全脱离Flutter环境的方案。 具体操作: 首先,每次需要构建纯粹Native工程前自动完成Flutter工程对应的远程库的编译发布工作,整个过程不需要人工干预。
我们在开发 iOS 程序的时候,往往都会根据需要导入很多的第三方框架,但是不同的框架完成的功能不同,所以导入的方式也不同,并不是把它直接拖进工程中就完事了,我们需要配置各种环境,链接各种库文件等等。 有的时候我们并不能一个不漏的完成导入,而一旦出了问题,尤其是那些需要框架比较多的工程 (比如早期的百度地图框架),将很难解决,而且,如果遇到了第三方库升级,更新了方法那么我们还需要把之前的旧版本删掉,再重复一下前面的工作 CocoaPods 就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数,不管是导入还是更新或者移除,都是一句命令就搞定的。 ,这里建议直接右键你工程中.xcodeproj 文件选择在终端中打开,然后 在终端中输入命令 cd .. 以后打卡工程就直接打开这个文件就好啦 其中 podfile 文件中显示了我们这个工程中所以集成的第三方, 想修改版本的话就把后面的版本号改成你所需要的版本号就好,想删除的话就把这行删掉,想添加的话就用第五部的搜索命令去搜索然后同样把搜索结果中以
混沌工程定位很多人都会把混沌工程和测试区分不清楚,我从执行时机、执行后是否对系统产生新认知,做了一张图如下。 图片混沌工程工具系列传送门: 1、 混沌工程工具:Chaos-mesh与Chaosblade技术实现与原理分析(1)-腾讯云开发者社区-腾讯云 2、 混沌工程工具:chaos-mesh注入项原理分析 (2)-腾讯云开发者社区-腾讯云 3、 混沌工程工具:chaosblade在服务器上注入项原理分析(3)-腾讯云开发者社区-腾讯云 4、 混沌工程工具:业务代码注入原理(4)-腾讯云开发者社区-腾讯云 5、 混沌工程工具:Chaosblade Java业务代码注入原理(5)-腾讯云开发者社区-腾讯云 6、 混沌工程工具:混沌工程实施过程及持久价值(7)-腾讯云开发者社区-腾讯云 7、 混沌工程工具 :混沌工程定位及原则梳理(8)-腾讯云开发者社区-腾讯云 8、 混沌工程工具:一个混沌工程设计的例子(9)-腾讯云开发者社区-腾讯云混沌工程原则解读及选择原则混沌工程高级原则,是国外混沌工程专家一起整理的实践指南
8.
在iOS8中,scrollView和加载在它上面的点击事件会有冲突,所以做一个横向滑动的界面最好的选择就是UICollectionView。
Apple的开发着文档上有Keychain的完整使用实例(请参见iOS Keychain Services Tasks)。今天博客中用户名和密码的存储和更新就是使用的官方文档给的示例。 打开后,我们重新运行工程,然后再观察其效果。 ? 当然,我们对数据进行AES加密,使用Snoop-it监听到的就是加密后的数据,这样一来就增加了逆向工程的难度。 ?
一、准备工作 unity导出的xcode项目 二、开始倒腾 1、将Unity3D中的以下文件导入到工程目录下 Data Classes MapFileParser.sh Libraries MapFileParser classes中main.mm 中的代码复制到项目的main.m中 并把后缀也改为mm 并将 UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String : AppControllerClassName]); 修改为 UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String: @" delegate.unityWindow.hidden = YES; } } 三、添加Framework以及Run Script 添加这两项的时候注意和unity的工程中保持一致
我们在iOS开发中,难免会遇到项目做到一半要改名字的情况。如果项目名差的太大,工程名看起来总是不舒服的,有良心的开发者可能就会想着为工程改个贴切的名字,那么你就为用到本文记录的内容。 修改真实目录名称 3.修改工程中文件夹的路径 在上一步修改玩真实文件夹的名字后,工程中所有的类都变成了红色(文件找不到)。如下图所示: ? 主要是因为工程中的文件夹指引的路径不对。 ? DB9337FB-35A2-4509-84EB-BDF17C9BEA8C.png 点击Replace All之后,大部分doutu都会被替换为shopping,但是还是有一些顽固的残留。 ? Paste_Image.png 8.修改大文件夹的名称 其实这一步,应该在拷贝完工程后,直接修改的。所以这一步更应该放在第一步做。 ? 修改大文件夹的名称 9.修改推送文件的配置(补充) 从iOS 10 开始,工程里多了一个entitlements文件,所以修改完其他之后,还需要修改一下 entitlements文件的路径。
.URL 加载过程中,出现汉字乱码 ---- NSString* urlstr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding @_~%#[]", NULL, kCFStringEncodingUTF8)); OK,中文问题解决完毕
1.右键工程 --> 显示包内容 2.打开project.pbxproj文件 3.command + F :搜索“<<<<<” 或“>>>>>” 4.删除这些符号所在的行就行,别删多了 删完之后,你的工程就能打开了