Hopper 支持命令行调用吗?


#1

需要对iPa进行自动化反编译,用户上传一个ipa文件,自动砸壳,使用classdump获取头文件。想问下Hopper支持命令行模式调用吗,直接反编译出所有的代码


#2

貌似不支持,我也想查过。
有个应该支持的radare2


#3

即使不支持, 也可以注入dylib自己实现啊


#4

主要是获取汇编代码这块,还有生成伪代码的过程需要能够自动化,求大神给个思路!


#5

感谢,我找下资料


#6

这个还需要思路吗, 找到他的接口, 调用就是了, 跟外挂一个道理


#7

谢谢!


#8

Hopper确实有个命令行程序。不知道干啥用的


#9

求详细介绍


#10

可以试试 radare2,有 API 可以做,就是反汇编速度不如 Hopper 和 IDA,

而且其实也没有反编译伪代码的功能


#11

好的,感谢!


#12

为什么我找不到app文件里面的二进制文件呢?


#13

显示包内容后,会有一个跟app同名的可执行文件


#14

错了。二进制的名字是写在Info.plist里的,并不一定要跟app同名


#15

我完全可以搞一个叫抖音的App,包名是傻逼.app然后可执行文件叫 ByteDance


#16

谢谢,我已经找到了,一个文件一个文件实验,就找到了:joy::joy::joy:


#17

谢谢,我已经找到了,一个文件一个文件实验,就找到了


#18

谢谢大佬指正:joy:,请问大佬怎么能 hook installd 中的方法?给 installd 写一个 tweak,hook [MIClientConnection _doInstallationForURL:withOptions:completion:]这个方法,想拿到参数的信息,但是没有执行hook方法


#19

参考 https://github.com/angelXwind/AppSync


#20

参考了AppSync,但是 hook 方法还是不执行,试过了 MSHookFunction 和 Logos

#import <substrate.h>

void * (*old_symbol1)(void *, void *, void *);

void * new_symbol1(void * arg0, void * arg1, void * arg2) {
    NSLog(@"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    NSLog(@"Hook!!!!!!!!!    %@", arg1);
    return old_symbol1(arg0, arg1, arg2);
}

void (*old_symbol2)(void *, void *, void *);

void new_symbol2(void * arg0, void * arg1, void * arg2) {
    NSLog(@"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    NSLog(@"Hook!!!!!!!!!    %@", arg1);
    old_symbol2(arg0, arg1, arg2);
}

%ctor
{
    @autoreleasepool {
	
	    NSLog(@"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
	
	    MSImageRef image = MSGetImageByName("/usr/libexec/installd");

	    // void *symbol1 = MSFindSymbol(image, "__MIInstaller_initWithURL_options_forClient__");
	    void *symbol1 = MSFindSymbol(image, "initWithURL:options:forClient:");
	    if (symbol1) NSLog(@"Hook __MIInstaller_initWithURL_options_forClient__ !!!!!!!!!!");
	    MSHookFunction((void *)symbol1, (void *)&new_symbol1, (void **)&old_symbol1);
	
	    // void *symbol2 = MSFindSymbol(image, "__MIClientConnection__doInstallationForURL_withOptions_completion__");
	    void *symbol2 = MSFindSymbol(image, "_doInstallationForURL:withOptions:completion:");
	    if (symbol2) NSLog(@"Hook __MIClientConnection__doInstallationForURL_withOptions_completion__ !!!!!!!!!!");
	    MSHookFunction((void *)symbol2, (void *)&new_symbol2, (void **)&old_symbol2);
    }
}