逆向的笔记

ssh [email protected] —链接手机 -------192.168.208.214
killall SpringBoard --重启手机
xcrun --sdk iphoneos --show-sdk-path --显示当前系统上安装的iossdk版本和路径
THEOS_DEVICE_IP = 192.168.208.242 --在Makefile文件最上面添加,意思是指定安装的设备ip
export THEOS=/opt/theos/ --相当于宏定义 但是电脑重启之后回失效
echo $THEOS --查看当前有无 $THEOS 定义
sudo mv -f ~/Desktop/CydiaSubstrate /opt/theos/lib/libsubstrate.dylib --将桌面上得文件CydiaSubstrate剪切到 后面的路径下,并命名为libsubstrate.dylib,原路径下若有这个libsubstrate.dylib文件,则覆盖掉

sudo chmod 777 /opt/theos/bin/ldid --给ldid获取可读可写权限 (Permission denied 报这个错误的时候要执行下)
设备上的文件获取权限:先cd到该文件路径下,然后输入 chmod 777 +该文件名 就可以获取到权限,跟mac上不同
cd ~/Desktop/ -- 直接进入Desktop路径下

砸壳步骤:
1.链接到手机 ssh [email protected]
2.找到目标程序的路径 find /var/mobile/Applications/ -name MicroMessenger --找到某个app的路径 手机的要先用命令行进入手机
exp:淘宝app路径 /var/mobile/Applications/6D31F4DA-FA89-464D-A68E-D7F6E9BB8CF3/Taobao2013.app/Taobao2013
3.cd到 放有dumpdecrypted.dylib的路径下 cd /var/tmp/ --dumpdecrypted.dylib 貌似每次都要copy下
4.执行下面的
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/6D31F4DA-FA89-464D-A68E-D7F6E9BB8CF3/Taobao2013.app/Taobao2013 ---开始砸淘宝的壳
5./var/tmp/ 路径下会生成一个叫做 xxx.decrypted 的文件,这就是砸壳成功后得到的东西,导出到pc上面;(要重启下iTools,不然看不到生成的文件)
6.cd到放置 xxx.decrypted 文件的路径下 ,执行下面:
class-dump -H SOHUVideo.decrypted -o -SOHUVideo ---用class-dump 分析 Taobao2013,得到对应的头文件

scp -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework [email protected]:/System/Library/Frameworks
-- scp -r /***/xxx -- 要拷贝文件的路径
-- [email protected]:/System/Library/Frameworks --将上面的文件拷贝到这里,root是获取手机的权限,输入密码

class-dump 步骤:
将要分析的XXX.app 中包里面的XXX文件拷贝到文件夹下(我放在桌面为例),同样cd到该文件夹下,输入: class-dump -H SOHUVideo.decrypted -o -SOHUVideo 然后回车(XXX为你自己要分析的app的名字);这样就会在桌面上生成一个文件夹,叫_XXX,里面就会有分析得到的app的所有头文件(没有加密过得app可以,和源文件有一点点区别)。

class-dump -H qiyiiPhone -o -qiyiiPhone.h

创建Theos步骤:

  1. cd到工程路径下(比如 /Users/user/Documents/IOSHack);
    2.输入: /opt/theos/bin/nic.pl --作用 启动NIC(new Instance Creator)
    这一步可以先设置环境变量,然后在执行:
    export THEOS=/opt/theos --设置环境变量,每次重启之后都要设置~
    $THEOS/bin/nic.pl --启动 NIC
    3.输入 9 回车 --选择模板
    4.输入工程名:*******;此时还要输入deb的名字(类似Bundle identifier);然后还要输入作者名;
    5.这一步要输入tweak作用对象的bundle identifier(例如:com.apple.mobilephone--系统的电话模块.可以在应用IPA文件解压后得到的文件夹下iTunesMetadata.
    plist文件中找到。)
    6.Theos 要求制定tweak安装完成后要重启的应用,比如上面输入的bundle identifier为: com.apple.mobilephone,则这里输入进程名:mobilephone(
    这一步书上有问题,作者已经勘误说明)S
    7.以上六步回创建好Theos工程,下面在该工程目录下执行make命令(编译),会报错,打开makefile文件,在最上面添加
    ARCHS = armv7 ------制定架构
    TARGET = iPhone:7.1:4.3 -------采用7.1版本的sdk(即Xcode中的Base SDK),且发布对象为ios4.3及以上版本
    8.执行 make packgae(打包),(make package install 安装)其实就是先make再dpkg-deb
    9.常用的一些打印函数:object_getClassName(xxx) --将对象的类名用 char* 表示

Cycript使用教程:
1.ssh [email protected] —链接手机
2.ps -A | grep XXXX(SOHUVideo) --获取xxxx(app的名字)的进程 -- ps ax | grep SpringBoard
exp:
1):ps -ef | grep Moji --获取Moji的进程号
2):cycript -p 682 --挂钩墨迹天气的进程,成功挂钩之后,通过UIApp.delegate 和 UIApp.keyWindow.rootViewController找到他的delegate和rootViewController;
3):UIApp.delegate --输出Moji地delegate文件名字
4):UIApp.keyWindow.rootViewController --找到墨迹天气的rootViewController,这里为ParentViewController
5):输入:
function printMethods(className) {
var count = new new Type("I");
var methods = class_copyMethodList(objc_getClass(className), count);
var methodsArray = [];
for(var i = 0; i < *count; i++) {
var method = methods[i];
methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)});
}
free(methods);
free(count);
return methodsArray;
}
6):输入:printMethods(ParentViewController) --会将ParentViewController里面的方法都打印出来,一大坨。。。
7):可以看到 ShowCamera 这个方法,下面模拟点击照相机事件:
8):[[[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0]nextResponder]ShowCamera]

3.control + D

var alertView = [[UIAlertView alloc] initWithTitle:@"HaoYi" message:@"HelloWordl" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil];

验证某个函数是否被制定操作调用:
1.exp
%hook SBScreenShotter
-(void)saveScreenshot:(BOOL)screenshot
{
%orig;
NSLog("saveScreenshot:is called");
}
%end
2.将对应的plist文件的Filter设置为:com.apple.springboard;用Theos编译打包成deb,安装在设备上,重启下,出现锁屏界面时同时按下home+lock,然后打开终端,ssh进IOS
输入:grep iOSRE /var/log/syslog --没试过,不过看log信息应该就是这样~

你可能感兴趣的:(逆向的笔记)