最近逆向一个软件,无奈类名、方法名混淆的太厉害,class-dump后,很难猜出大致是哪个方法在起作用。用reveal 和 cycript 找到了viewcontrol 类,但类方法太多,还是不能确定是哪个方法被调用了。尝试为方法下断点,结果下了好几个都没有断下来。因此想到了用logify为指定类的每个函数写hook 方法,用theos生成tweak。

logify使用方法比较简单,安装theos后,在bin目录下就有logify.pl。相应的用法比较简单,在此不做说明。

thoes使用网上教程也很多。

本文主要把我需要的障碍做下表述:

1、设置环境变量,可以每次在终端上运行

export THEOS=/opt/theos
export PATH=/opt/theos/bin/:$PATH

但这样比较麻烦,可以#vi /etc/profile,在这个文件中加上以上命令,重新打开终端,环境变量就生效了。这样就无需每次要去终端里export环境变量了。

2、运行nic.pl时,选择11,

 tong:Applications xxxxxxx$ nic.pl
NIC . - New Instance Creator
------------------------------
[.] iphone/activator_event
[.] iphone/application_modern
[.] iphone/cydget
[.] iphone/flipswitch_switch
[.] iphone/framework
[.] iphone/ios7_notification_center_widget
[.] iphone/library
[.] iphone/notification_center_widget
[.] iphone/preference_bundle_modern
[.] iphone/tool
[.] iphone/tweak
[.] iphone/xpc_service
Choose a Template (required):
Project Name (required): mytweak
Package Name [com.yourcompany.mytweak]: com.mycompany.mytweak
Author/Maintainer Name [xxx]: wu
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.apple.Security
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: -

这其中,MobileSubstrate Bundle filter 是指本插件需要作用的app 的id,在plist 中可以找到。如果需要作用于所有app,那么需要

com.apple.Security。
Insert your tweak into all processes

Leaving the filter plist file empty and simply deleting the file no longer work. The new solution would be modifying the filter plist to: { Filter = { Bundles = ( "com.apple.Security", ); }; } Since all processes will import Security.framework implicitly, your tweak can now hook into all processes​[:wink:]”

3、将 logify生成的tweak.xm文件替换nic.pl生成的tweak.xm文件。
执行命令make,如果make后 要重新make,只需要先执行make clean即可。 4、打包,执行make package。

logify与theos的二三事的更多相关文章

  1. Java并发编程二三事

    Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...

  2. linux杂记(十二?) 关于账号和密码的二三事

    关于密码的二三事 关于账号和密码的二三事 久了不更linux的相关知识,实在是懒得想内容点(纯粹是懒).那么今天就来谈谈关于linux密码和账号的重要概念. 假如你的主机遭到入侵,那么对方的第一个侵入 ...

  3. MySQL5.7关于密码二三事

    MySQL5.7关于密码二三事 第一个:update user set password=password('root') where user='root' and host='localhost' ...

  4. Java中的匿名内部类及内部类的二三事

    匿名内部类适合创建那些只需要使用一次的类,它的语法有些奇怪,创建匿名内部类会立即创建一个该类的实例,这个类定义立即消失,且不能重复使用. 定义匿名类的格式如下: new 实现接口() |父类构造器(实 ...

  5. Emacs 启动优化二三事

    Emacs 启动优化二三事 */--> div.org-src-container { font-size: 85%; font-family: monospace; } p {font-siz ...

  6. WinForm二三事(三)Control.Invoke&Control.BeginInvoke

    http://www.cnblogs.com/yuyijq/archive/2010/01/11/1643802.html 这个系列从2009年写到2010年,差点又成太监文.随着WPF/Silver ...

  7. iOS7下滑动返回与ScrollView共存二三事

    [转载请注明出处] = =不是整篇复制就算注明出处了亲... iOS7下滑动返回与ScrollView共存二三事 [前情回顾] 去年的时候,写了这篇帖子iOS7滑动返回.文中提到,对于多页面结构的应用 ...

  8. 一只代码小白git托管路上的二三事

    [经验]一只代码小白git托管路上的二三事 写在前面的话 寒假的时候,娄老师给我们布置了代码托管的作业,并要求把托管地址发给学委.因假期的时候没有带电脑回家,所以只是在手机上草草注册了,也稀里糊涂就将 ...

  9. YTU 1008: 童年生活二三事

    1008: 童年生活二三事 时间限制: 1000 Sec  内存限制: 64 MB 提交: 842  解决: 592 题目描述 Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去. ...

随机推荐

  1. org.apache.jasper.JasperException: - Page directive must not have multiple occurrences of pageencoding

    最近写jsp遇到一系列的低级错误,记录下来权当前车之鉴吧. 错误提示: SEVERE: Servlet.service() for servlet jsp threw exceptionorg.apa ...

  2. 将 MacOS 默认的 PHP 版本升级到 7.*

    上接:在macOS Sierra 10.12搭建PHP开发环境 设置 brew brew tap homebrew/dupes brew tap homebrew/versions brew tap ...

  3. Luogu T7152 细胞(递推,矩阵乘法,快速幂)

    Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...

  4. C#常用8种排序算法实现以及原理简介

    public static class SortExtention { #region 冒泡排序 /* * 已知一组无序数据a[1].a[2].--a[n],需将其按升序排列.首先比较a[1]与a[2 ...

  5. Go语言string,int,int64 ,float转换

    (1)int转string s := strconv.Itoa(i)等价于s := strconv.FormatInt(int64(i), 10) (2)int64转string i := int64 ...

  6. redhat设置开机自动连接网络

    一.设置开机自动连接网络1.用root账号登录2.打开etcsysconfignetwork-scrpts目录3.vi ifcfg-eth04.将ONBOOT改为yes 二.没有图形界面如何连接网络1 ...

  7. nopCommerce 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]

    一.nop种的路由注册 在Global.asax,Application_Start()方法中会进行路由注册,代码如下. public static void RegisterRoutes(Route ...

  8. java 读取文件的路径

    1. 通用定位到用户目录下:   String userDir = System.getProperty("user.dir"); 2. web项目定位到WEB-INF/class ...

  9. 将csv格式的文件数据导入mysql中

    示例如下: load data infile 'test.csv'into table `test`fields terminated by ',' optionally enclosed by '& ...

  10. 【http】post和get请求的区别

    两种常用的HTTP请求方式:post和get   get:从指定的资源进行请求.数据长度有限制(2048个字符)可被缓存.可被保留在浏览器历史记录中,安全性较差.发送敏感信息如密码时不适用.   po ...