aso
code
issues
_NSPlaceholderData initWithBase64EncodedString:options:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[_NSPlaceholderData initWithBase64EncodedString:options:]: nil string argument'
清除所有被Git忽略的文件或文件夹
- 用rm递归递归删除子目录下所有._*后缀文件
find . -name "._*" | xargs rm -f
git rm --cached
删除的是追踪状态
子目录出现_前缀的文件,开发者需要把_前缀文件删除后,再编译
git clean -d -f -x deletes files listed in .gitignore and such. E.g. workspaces that don't belong in git, Pods folder, etc
- 查看在清理之前会做的操作
git clean -Xn
- 清除文件或文件夹, -f 选项强制删除,-d删除目录(小心)
git clean -Xdf
PTFakeTouch
- [PTFakeTouchdemo] (https://github.com/iosaso/PTFakeTouchDemo)
包括 PTFakeTouch源码
- 作者发的iosre 帖子
不越狱的话只能在当前程序中调用
issus
找不到#import <IOKit/IOKit.h>
ASO/GeneralUtil.m:2:9: fatal error: 'IOKit/IOKit.h' file not found
- IOKit 修改为
<IOKit/IOKitLib.h>
, 编译完成之后, 链接的时候报这个
"_IOHIDEventAppendEvent", referenced from:
_kif_IOHIDEventWithTouches in PTFakeTouch(IOHIDEvent+KIF.o)
- 因此换另外一种思路: 这个IOKit 是需要自己导入到Theos里面的
可以采用 @houshuai0816 的theos替换一下你本地的theos环境
sudo cp -a include/* /opt/theos/include/
lib devzkn$ sudo cp -a * /opt/theos/lib
比对KNtheos 和 [当前出现问题的theos环境]
IOKit.h
- 发现了/opt/theos/include/IOKit ` IOKit.h -> IOKitLib.h`
│ ├── IOKit │ │ ├── IOKit.h -> IOKitLib.h
/opt/theos/include/IOKit
还新增了hid 和 hidsystem 目录
│ │ ├── hid
│ │ └── hidsystem
- /opt/theos/include
├── include
│ ├── CPBitmapStore.h
│ ├── CPDistributedMessagingCenter.h
│ ├── Celestial
│ │ ├── AVArrayQueueFeeder.h
│ │ ├── AVCallbackHandler.h
│ │ ├── AVController-AVController_Celeste.h
│ │ ├── AVController.h
│ │ ├── AVControllerFig.h
│ │ ├── AVControllerRemoteFig.h
│ │ ├── AVControllerRemoteFigStream.h
│ │ ├── AVFileProcessor.h
│ │ ├── AVFileValidator.h
│ │ ├── AVFromMainThreadPostNotificationNameDict.h
│ │ ├── AVFromNotifySafeThreadPostNotificationNameDict.h
│ │ ├── AVItem-AVItemLogging.h
│ │ ├── AVItem.h
│ │ ├── AVItemAccessLog.h
│ │ ├── AVItemAccessLogEvent.h
│ │ ├── AVItemAccessLogEventInternal.h
│ │ ├── AVItemAccessLogInternal.h
│ │ ├── AVItemErrorLog.h
│ │ ├── AVItemErrorLogEvent.h
│ │ ├── AVItemErrorLogEventInternal.h
│ │ ├── AVItemErrorLogInternal.h
│ │ ├── AVObjectRegistry.h
│ │ ├── AVPlaybackItem.h
│ │ ├── AVPlaybackQueue.h
│ │ ├── AVQueue.h
│ │ ├── AVQueueFeeder.h
│ │ ├── AVRecorder.h
│ │ ├── AVRecorderAudioQueueImpl.h
│ │ ├── AVRecorderImpl-Protocol.h
│ │ ├── AVRemaker.h
│ │ ├── AVSafePerformOnMainThreadTargetDict.h
│ │ ├── AVSafePostDelayedNotificationFromMainThreadTargetDict.h
│ │ ├── AVSubtitleLayerUsingWebKit.h
│ │ ├── AVSystemController.h
│ │ ├── AVTimeMarkerObservation.h
│ │ ├── AVValue.h
│ │ ├── CDStructures.h
│ │ ├── EventSystemManager.h
│ │ ├── FigAccelerometerDelegate.h
│ │ ├── FigCoreMotionDelegate.h
│ │ ├── FigIOHIDMotionDelegate.h
│ │ ├── NSArray-PickableRoutes.h
│ │ ├── NSCopying-Protocol.h
│ │ ├── NSDictionary-PickableRoute.h
│ │ ├── NSObject-NSObject_AVShared.h
│ │ ├── NSObject-Protocol.h
│ │ └── SBSAccelerometerDelegate-Protocol.h
│ ├── CoreSurface
│ │ └── CoreSurface.h
│ ├── EventRegister.h
│ ├── IOKit
│ │ ├── IOKit.h -> IOKitLib.h
│ │ ├── IOKitKeys.h
│ │ ├── IOKitLib.h
│ │ ├── IOReturn.h
│ │ ├── IOTypes.h
│ │ ├── OSKext.h
│ │ ├── OSMessageNotification.h
│ │ ├── hid
│ │ └── hidsystem
│ ├── IOMobileFrameBuffer.h
│ ├── IOSurface
│ │ ├── IOSurface.h
│ │ ├── IOSurfaceAPI.h
│ │ ├── IOSurfaceAccelerator.h
│ │ └── IOSurfaceBase.h
│ ├── LSApplicationWorkspace.h
│ ├── MobileInstallation.h
│ ├── SpringBoard.h
│ ├── bootstrap.h
│ ├── lauxlib.h
│ ├── lua.h
│ ├── lua.hpp
│ ├── luaconf.h
│ ├── lualib.h
│ ├── rocketbootstrap.h
│ ├── rocketbootstrap_dynamic.h
│ └── substrate.h
- /opt/theos/lib
├── lib 这个新增的主要库 │ ├── AFNetworking.framework │ │ ├── AFNetworking │ │ ├── Headers │ │ ├── Info.plist │ │ ├── Modules │ │ └── _CodeSignature │ ├── IOKit.framework │ │ ├── IOKit.tbd │ │ └── Versions │ ├── IOMobileFramebuffer.framework │ │ └── IOMobileFramebuffer.tbd │ ├── IOSurface.framework │ │ ├── IOSurface.tbd │ │ └── PTFakeTouch.framework │ ├── SpringBoardServices.framework │ │ └── SpringBoardServices.tbd │ ├── StoreServices.framework │ │ └── StoreServices.tbd │ ├── librocketbootstrap.dylib │ ├── libsimulatetouch.dylib │ └── libsubstrate.dylib
See Also
ios10_net_flow
分享注入和打包的两个小心得
- 1 注入的时候加入JSPatch,这样lib只需要有JSPath就好了。hook的代码通过热更新js执行
- 2 重签名的时候用
*
的描述文件签名 ,这样bundle id可以修改成任意id; 绕开有bundleid校验的app比如微信,网易云音乐。而且经测试这样重签名后推送也可以收到。
PTFakeTouch
- PTFakeTouch:一个外国人写的KIF自动化测试框架基础上开发的。用了很多私有API
讨论一下逆向混淆过的程序的思路
1)出口处看堆栈。统计N次stack日志里最常出现的方法就是加密解密的方法。
2)搜索密码学用的常数。
3)IR层用CSEKSE重写来合并指令
inject
anti-class-dump
/Users/devzkn/bin/knpost aso aso、PTFakeTouch -t aso #原来""的参数,需要自己加上""
IOKit
devzkndeMacBook-Pro:IOKit devzkn$ tree -L 2
.
├── IOKitKeys.h
├── IOKitLib.h
├── IOReturn.h
├── IOTypes.h
├── OSKext.h
├── OSMessageNotification.h
└── hid
├── IOHIDDisplay.h
├── IOHIDEvent.h
├── IOHIDEvent7.h
├── IOHIDEventData.h
├── IOHIDEventQueue.h
├── IOHIDEventSystem.h
├── IOHIDEventSystemClient.h
├── IOHIDEventSystemConnection.h
├── IOHIDEventTypes.h
├── IOHIDEventTypes7.h
├── IOHIDNotification.h
├── IOHIDService.h
├── IOHIDSession.h
├── IOHIDUserDevice.h
└── OSType.h
会出现 这个错误,因此使用IOKitLib.h,也不可行
_IOHIDEventCreateDigitizerEvent", referenced from:
_kif_IOHIDEventWithTouches in libKIF.a(IOHIDEvent+KIF.o)
/System/Library/Frameworks/IOKit.framework