美文网首页ios 开发
iOS逆向_tweak使用

iOS逆向_tweak使用

作者: iOS小洁 | 来源:发表于2023-01-23 13:25 被阅读0次

tweak

Tweak的实质就是iOS平台的动态库。iOS平台上有两种形势的动态库,dylib与framework。Framework这种开发者用的比较多,而dylib这种就相对比较少一点。而tweak用的正是dylib这种形势的动态库。

我们可以在/Library/MobileSubstrate/DynamicLibraries目录下查看越狱手机上存在着的所有tweak。这个目录下除dylib外还存在着plist与bundle两种格式的文件,plist文件是用来标识该tweak的作用范围, 而bundle是tweak所用到的资源文件.

一般使用Tweak是通过Theos.

创建tweak项目

1、终端cd到存放项目代码的文件夹

2、终端输入 nic.pl,前提是安装了Theos

3、在命令给出的选项中选择iPhone/tweak

cd Desktop/jailbreak
nic.pl

4、根据提示输入项目信息

  • Project Name 项目名
  • Package Name 自己要生成的项目ID
  • Author/Maintainer Name 作者
  • [iphone/tweak] MobileSubstrate Bundle filter 要修改的APP包名,这里修改的是钉钉(com.laiwang.DingTalk)
  • [iphone/tweak] List of applications to terminate upon installation

原APP包名是通过 cycript 获取

编辑Makefile

在文件前面加入环境变量,标明通过哪个ip和端口访问手机。也可以直接将环境变量写入.bash_profile

THEOS_DEVICE_IPTHEOS_DEVICE_PORT

export THEOS_DEVICE_IP=192.168.1.160
export THEOS_DEVICE_PORT=22

TARGET := iphone:clang:latest:7.0
INSTALL_TARGET_PROCESSES = SpringBoard

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = DingTalk

DingTalk_FILES = Tweak.x
DingTalk_CFLAGS = -fobjc-arc

include $(THEOS_MAKE_PATH)/tweak.mk

编写代码

打开Tweak.x文件。写入要HOOK的方法。这里是把钉钉tabbar上的数字角标去掉了。

这里文件名,方法名来源:

  • 通过Reveal找到对应的视图类
  • 通过class-dump获取头文件信息,找到方法名
%hook DTUIBadgeView

- (id)initWithBadge:(id)arg1 {
    return nil;
}

%end

安装到手机

1、编译

make

2、打包成deb

make package

3、安装,默认是重启SpringBoard。我是非完美越狱,也只能选择重启SpringBoard

make install

theos-tweak的实现过程

1、编写Tewak代码

2、make:编译Tweak代码为动态库(.dylib)

3、make package:将dylib打包为deb文件

4、make install:将deb文件传送到手机上,通过Cydia安装deb

5、插件将会安装在/Library/MobileSubstrate/DynamicLibraries文件夹中

  • .dylib: 编译后的Tweak代码
  • .plist: 存放需要HOOK的APP ID

6、当打开APP时

  • Cydia substrate(Cydia插件)会让APP去加载对应的dylib
  • 修改APP内存中的代码逻辑,去执行dylib中的函数代码

7、theos的tweak不会对app原来的可执行文件进行修改,仅仅修改了内存中的代码逻辑

theos-tweak特点

1、未脱壳app支持theos-tweak

2、app被hook 代码不被修改的话一直有效

3、只能在越狱手机上起作用

4、可以对swift/C 函数进行tweak

5、可以对游戏项目进行tweak。但是很难,有混淆,多由c++实现

logify.pl 注意点

logify.pl生成的.x文件,很多时候编译不通过,需要进行一些处理

  • 删掉__weak
  • 删掉inout
  • 删掉协议,或者生命一下协议信息@protocol XXTestDelegate
  • 删掉\- (void).cxx_destruct { %log; %orig; }
  • 删掉HBLogDebug(@" = 0x%x", (unsigned int)r);
  • 替换类名为void,比如将* XXPerson 替换为 * void,或者生命一下类信息@class XXPerson

相关文章

  • iOS逆向_tweak使用

    tweak Tweak的实质就是iOS平台的动态库。iOS平台上有两种形势的动态库,dylib与framework...

  • iOS逆向之Logos语法介绍

    上一篇文章: iOS逆向工具之Tweak工程介绍 上一篇文章,我们介绍tweak工程,简单实用了Logos语法逆向...

  • iOS逆向开发(三)----Clutch,dumpdecrypt

    iOS逆向开发(三)----Clutch,dumpdecrypted,Theos-Tweak 脱壳 我们知道上架到...

  • iOS逆向工程之Theos

    如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生。那么由Tweak我们又会引出Theos, 那么什么是T...

  • iOS逆向工程之Theos

    如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生。那么由Tweak我们又会引出Theos, 那么什么是T...

  • iOS逆向工程之Theos

    如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生。那么由Tweak我们又会引出Theos, 那么什么是T...

  • Theos-tweak工程

    1、查看《iOS逆向 开发工具》 Theos的使用方法做准备工作;2、创建tweak工程,实现在屏幕上添加弹框(越...

  • ios逆向笔记之Theos编写Tweak

    ios逆向笔记之Theos编写Tweak Cydia的作者开发的(DHowett) 安装Howbrew 利用bre...

  • iOS逆向之二-一个简单的Tweak插件原理解析

    iOS逆向之二-一个简单的Tweak插件 Tweak插件可以动态的注入到宿主程序中,修改宿主程序的运行流程Twea...

  • iOS 逆向 - 微信 helloWorld

    [TOC] iOS 逆向 -微信 helloWorld 一、 前言 本篇主要制作微信的 tweak,实现在非越狱版...

网友评论

    本文标题:iOS逆向_tweak使用

    本文链接:https://www.haomeiwen.com/subject/xhblhdtx.html