aso

aso

aso、PTFakeTouch

Posted by kunnan on June 6, 2018

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源码 

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

讨论一下逆向混淆过的程序的思路

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

转载请注明: > aso