美文网首页IOS逆向美学
防tweak插件的猫腻

防tweak插件的猫腻

作者: QG不吃鱼的猫 | 来源:发表于2018-06-11 17:06 被阅读63次

防护方案-tweak插件的猫腻

一、防护tweak插件

    1、Build Settings->Other Linker Flags->-Wl,-sectcreate,__RESTRICT,__restrica,/dev/null
 2、这样就会在Mach-O中添加 Section(_RESTRICT,__restrica)
 3、设置后 dyld.cpp中
  函数 static bool hasRestrictedSegment(const macho_header* mh)返回true
  如果加载tweak运行程序会闪退。

二、反-防护tweak插件

1、下载 Synalyze It! Pro
2、修改Mach-O中的_RESTRICT和__restrica的这俩个字符串名称

二、反-反-防护tweak插件

#import <mach-o/loader.h>
#import <mach-o/dyld.h>
1、找一个类的load方法加入以下代码

+(void)load {
    //MachO 最先加载的是我们自己的可执行文件
    const struct mach_header * header = _dyld_get_image_header(0);  
    if (hasRestrictedSegment(header)) {
        NSLog(@"防止Tweak注入");
    }else{
        NSLog(@"被修改了!!");
        exit(0);
    }    
}
        
    static bool hasRestrictedSegment(const struct macho_header* mh)
    {
        const uint32_t cmd_count = mh->ncmds;
        const struct load_command* const cmds = (struct load_command*)(((char*)mh)+sizeof(struct macho_header));
        const struct load_command* cmd = cmds;
        for (uint32_t i = 0; i < cmd_count; ++i) {
            switch (cmd->cmd) {
                case LC_SEGMENT_COMMAND:
                {
                    const struct macho_segment_command* seg = (struct macho_segment_command*)cmd;
                    
                    printf("seg name: %s\n", seg->segname);
                    if (strcmp(seg->segname, "__RESTRICT") == 0) {
                        const struct macho_section* const sectionsStart = (struct macho_section*)((char*)seg + sizeof(struct macho_segment_command));
                        const struct macho_section* const sectionsEnd = &sectionsStart[seg->nsects];
                        for (const struct macho_section* sect=sectionsStart; sect < sectionsEnd; ++sect) {
                            if (strcmp(sect->sectname, "__restrict") == 0)
                                return true;
                        }
                    }
                }
                    break;
            }
            cmd = (const struct load_command*)(((char*)cmd)+cmd->cmdsize);
        }
        
        return false;
    }
2、这样就能检测到二进制文件被修改,从而直接杀掉程序。

相关文章

  • 防tweak插件的猫腻

    防护方案-tweak插件的猫腻 一、防护tweak插件 二、反-防护tweak插件 二、反-反-防护tweak插件

  • Tweak原理与越狱防护

    本文不包含具体编写插件的内容,只是从Tweak的原理去探究怎么防护插件的注入。 生成一个Tweak插件 有两种方式...

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

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

  • Cydia deb

    打包deb 创建一个Tweak工程(这里省略,可以参见IOS插件开发) 进入Tweak工程目录(假设该目录在Mac...

  • <安全攻防之Tweak>

    一、Tweak原理 Theos创建Tweak插件,编译后会生成一个动态库和一个对应包名的plist文件,打包后会把...

  • Ubuntu17.10安装NetSpeed插件

    NetSpeed插件是Gnome下一款可以时实显示『下载 / 上传』流量的插件 当然,得装gnome-tweak-...

  • ios逆向日志--cast from pointer to sm

    写tweak插件时,用logify直接导出一个头文件到tweak.xm中 里面有一句为hook为: - (void...

  • 防debug的猫腻

    反debug 一、防护debug 二、反-防护debug 三、反-反-防护debug 四、小知识点 1、应用中的动...

  • iOS逆向与安全10.1:初识防护

    DYLD_INSERT_LIBRARIES 防护 tweak插件 dyld加载应用过程,是否设置限制插入动态库,如...

  • 插件开发工具Theos使用小记

    前言 最近用MonkeyDev里的Logos Tweak写了一款小插件,了解到MonkeyDev有部分是基于The...

网友评论

    本文标题:防tweak插件的猫腻

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