Theo做简单的插件

2021-05-29  本文已影响0人  spyn_n

一、确定目标APP

  找个目标APP,确定HOOK的点,笔者找了某APP的注册按钮,要制作一个简单的破坏注册的插件。


image.png

二、分析准备

  通过USB实现ssh登录,拿到手机的root权限,使用cycript调试APP,命令:cycript -p zhsApp,使用自己封装的psy.cy(@import com.Panshuyan.psy),查看APPID(得到com.shikee.zhsApp),获取当前控制器:PSYCurrentVC();在importy一个cycript的md,如下图:

#"<MineViewController: 0x10283f000>"
image.png

三、静态分析

  手机进入要HOOK的按钮的界面,终端cy#输入:pviews(),首先从字面入手,找到“注册买家账号”这几个字,因为pviews打印出的都是编码的,我们可以进入python环境获得“注册买家账号”这几个字的编码(python3支持中文输出,所以使用Mac自带的Python2.7.10'\xe6\xb3\xa8\xe5\x86\x8c\xe4\xb9\xb0\xe5\xae\xb6\xe8\xb4\xa6\xe5\x8f\xb7'然后回来搜一下,可以得到可能按钮的内存地址UIButton: 0x101c65080

拿到编码 定位按钮
  我们说了,我们得到按钮的内存地址只是可能的,为了严谨性,我们验证一下,直接通过#0x101c65080.backgroundColor=[UIColor blackColor]#0x101c65080.backgroundColor=[UIColor redColor]修改按钮的颜色验证一下我们的猜测,很明显是对的。
#0x101c65080.backgroundColor=[UIColor blackColor] #0x101c65080.backgroundColor=[UIColor redColor]

  此时可以开始分析了,通过#0x101c65080.allTargets拿到内存的所有响应者,可以发现只有一个,我们可以通过rp(#0x101c65080)查看整条响应链验证LoginGuideBtnCell: 0x102814a00也在整条响应链当中。然后在查一下事件类型#0x101c65080.allControlEvents,64代表的是26,位运算1<<6,对应的是:UIControlEventTouchUpInside,最后通过[#0x101c65080 actionsForTarget:#0x102814a00 forControlEvent:64]拿到对应按钮的方法名("regBtnAction:")。

image.png
image.png 0x101c65080响应链

  为了进一步验证我们可以对该APP砸壳拿到所有头文件,如下:
砸壳:dump.py MachO
导出头文件:class-dump -H MachO -o ./MachOHeaders
搜索LoginGuideBtnCell,查看该头中是否有regBtnAction:方法,以及返回值类型,一切都指向我们的分析是正确的。

image.png

四、编写插件

  通过nic.pl开始选择生成插件工程,选择第15个tmplate --> iphone/tweak --> 工程名 --> 包名(包名全部使用小写,否侧打包的时候出现问题,可以看其给出的建议示例)--> 作者 --> 插件针对的APP的bundle id--> 安装后重启SpringBoard还是只重启对应的APP(默认是重启SpringBoard)。此时在对应的目录下生成了一个插件工程。

创建插件工程
工程目录
  在MakeFIle中最前面添加,意思是通过设备的IP和端口,笔者这里通过USB的localhost和端口2222。
export THEOS_DEVICE_IP=localhost
export THEOS_DEVICE_PORT=2222
(优化:因为每次写插件都要写这两句,那我就把这两句写到.zshrc里面,这里和以后就不用每次都要写了,一劳永逸)
image.png

  然后开始使用Logos语法,并根据我们上面的分析,在Tweak.x中编写HOOK代码如下:

#import <UIKit/UIKit.h>

%hook LoginGuideBtnCell

- (void)regBtnAction:(id)btn
{
    NSLog(@"\n\n\n🍺🍺停一下喝一杯酒先别注册了🍺🍺\n\n\n\n");
}

%end

  完成后保存,使用make指令编译工程,注意工程的路径不要包含空格,否则make的时候出现如下错误:最好也不要包含中文,因为有些情况下也会包错。然后剩下的就是make(编译)-->make package(打包) --> make install(安装),等待SpringBoard重启。
Your project is located at “/Volumes/500g/sbiuab/bxsiai sbuas/ussn/zhsappdemo”, which contains spaces. Spaces are not supported in the project path. Stop.

image.png
image.png

  此时我们的越狱设备上打开Cydia,找到已安装,发现我们的插件已经安装到设备上了,我们迫不及待的打开目标APP,找到对应的界面,点击我们HOOK的按钮,可在控制台看到进程我们NSLog的东西了。


image.png image.png
上一篇下一篇

猜你喜欢

热点阅读