逆向-1

ps -A

ps -A  显示所有的进程
ps -A | grep we  查找we

使用otool判断app是不是加密了的,如果是加密了的,则需要进行脱壳处理

yongwangdeMac-mini:weixin mudy$ otool -l WeChat | grep crypt
    cryptoff 16384
    cryptsize 57458688
    cryptid 1

使用Clutch进行脱壳

  由于在App Store上下载的app都是经过加密了的,我们无法使用class-dump直接获取.h文件(直接执行class-dump的时候,只会生成一个文件),所以我们第一步要进行脱壳(砸壳)的操作。

  将下载下来的Clutch文件的版本号去掉之后,拷贝到手机端的Device/var/bin目录下,这样的话,我们就可以在连接到手机之后,使用Clutch进行脱壳的操作(有时候提示没有这个命令,说明权限不够,需要提升权限,如下操作即可)。

  连接到手机之后,使用Clutch -i,就可以看到手机上安装的部分的应用,这些应用都是需要我们进行脱壳操作的。执行脱壳操作的时候,只需要执行Clutch -d 序号,就行了。脱壳成功之后,会生成一个ipa文件

ceshi:~ root# chmod +x /usr/bin/Clutch 
ceshi:~ root# Clutch -i
Installed apps:
1:   网易云音乐HD <com.netease.CloudMusicIpad>
2:   微信 <com.tencent.xin>
3:   ボイスレコーダー-無料ボイスメモ <com.leqimea.recorderAudio>
4:   芒果TV-HD <com.imgo.tv.hd>
5:   TestFlight <com.apple.TestFlight>
6:   金山电池医生 - 电池维护大师 <com.ijinshan.beijing.kbatterydoctor>
ceshi:~ root# Clutch -d 3

使用dumpdecrypted进行脱壳

  下载完dumpdecrypted之后,到该文件夹下,执行make命令,可以生成一个dylib动态库文件,将该文件拷贝到手机上(如果是root,放在/var/root目录中)

  在root目录中,使用环境变量DYLD_INSERT_LIBRARIES将dylib注入到需要脱壳的可执行文件(可执行文件路径可以通过ps -A获取)

ceshi:~ root# ldid -S /var/root/dumpdecrypted.dylib 
ceshi:~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/756838AD-4FAA-4D94-A5B9-E5CE5CEF2DF9/WeChat.app/WeChat

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/....,最终获得的.decrypted文件就是脱壳后的可执行文件

app去掉广告

  使用reveal获取到广告空间的内存地址(就在reveal的右下角),然后使用[#内存地址 removeFromSuperview],但是这种做法并不彻底

使用hook修改方法的实现

  使用theos来进行hook

  • brew install ldid

  • git clone --recursive https://github.com/theos/theos.git ~/theos或$THEOS
    --recursive 表示递归下载所需要的依赖,clone到~/theos文件夹下

  • 配置.bash_profile export THEOS=~/theos,导出一个环境变量THEOS,其值是~/theos

  • //export PATH=~/theos/bin:/usr/bin:usr/local/bin

  • export PATH=~/theos/bin:$PATH $PATH引用环境变量的值

  • 重启命令行

  • nic.pl

export THEOS_DEVICE_IP = 127.0.0.1
export THEOS_DEVICE_PORT = 10010

 
/* How to Hook with Logos
Hooks are written with syntax similar to that of an Objective-C @implementation.
You don't need to #include <substrate.h>, it will be done automatically, as will
the generation of a class list and an automatic constructor.

%hook ClassName

// Hooking a class method
+ (id)sharedInstance {
    return %orig;
}

// Hooking an instance method with an argument.
- (void)messageName:(int)argument {
    %log; // Write a message about this call, including its class, name and arguments, to the system log.

    %orig; // Call through to the original function with its original arguments.
    %orig(nil); // Call through to the original function with a custom argument.

    // If you use %orig(), you MUST supply all arguments (except for self and _cmd, the automatically generated ones.)
}

// Hooking an instance method with no arguments.
- (id)noArguments {
    %log;
    id awesome = %orig;
    [awesome doSomethingElse];

    return awesome;
}

// Always make sure you clean up after yourself; Not doing so could have grave consequences!
%end
*/


%hook FindFriendEntryViewController

- (long long)numberOfSectionsInTableView:(id)tableView{
    return %orig + 1;
}

- (long long)tableView:(id)tableView numberOfRowsInSection:(long long)section{

    if (section == [self numberOfSectionsInTableView:tableView]-1){
        return 3;
    }else{
        return %orig;
    }   
}

- (double)tableView:(id)tableView heightForRowAtIndexPath:(id)indexPath{
    if ([indexPath section] != [self numberOfSectionsInTableView:tableView]-1){
        return %orig;
    }else{
        return 52;
    }
}

- (id)tableView:(id)tableView cellForRowAtIndexPath:(id)indexPath{
    if ([indexPath section] != [self numberOfSectionsInTableView:tableView]-1){
        return %orig;
    }

    UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    cell.backgroundColor = [UIColor whiteColor];
    
    cell.textLabel.font = [UIFont systemFontOfSize:20];
    if ([indexPath row]==0)
    {
        cell.imageView.image = [UIImage imageWithContentsOfFile:@"/hongbao.png"];
        UISwitch *sw = [[UISwitch alloc]init];
        cell.accessoryView = sw;
        cell.textLabel.text = @"自动抢红包";
    }else if ([indexPath row]==1){
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.imageView.image = [UIImage imageWithContentsOfFile:@"/lingqian.png"];
        cell.textLabel.text = @"零钱加满";
    }else{
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.imageView.image = [UIImage imageWithContentsOfFile:@"/Lower.png"];
        cell.textLabel.text = @"遇到傻逼也是没招没招的";
    }
    
    return cell;
}

- (void)tableView:(id)tableView didSelectRowAtIndexPath:(id)indexPath{
    if ([indexPath section] != [self numberOfSectionsInTableView:tableView]-1){
         %orig;
    }else{
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    }

}
%end

获取appID

方式一:
ceshi:~ root# cycript -p WeChat
cy# @import mjcript
{}
cy# MJAppId
@"com.tencent.xin"

方式二:
cy# [NSBundle mainBundle].bundleIdentifier
@"com.tencent.xin"

方式三:
ceshi:~ root# Clutch -i
Installed apps:
1:   网易云音乐HD <com.netease.CloudMusicIpad>
2:   TestFlight <com.apple.TestFlight>
3:   ボイスレコーダー-無料ボイスメモ <com.leqimea.recorderAudio>
4:   芒果TV-HD <com.imgo.tv.hd>
5:   金山电池医生 - 电池维护大师 <com.ijinshan.beijing.kbatterydoctor>

使用Clutch -i的时候有一个局限,就是只能显示已经加壳的

编译、打包、安装

vim ~/tweak.sh

make clean && make && make package && make install

然后执行的时候,直接sh ~/tweak.sh

腾讯视频去广告

cy# #0x111ed60f0
#"<QNBPlayerVideoAdsView: 0x111ed60f0; frame = (0 0; 320 180); autoresize = W+H; layer = <CALayer: 0x170637460>>"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342