防tweak插件的猫腻

防护方案-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、这样就能检测到二进制文件被修改,从而直接杀掉程序。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 无痕美塑客户售前售后专业知识解答 客户售前咨询产品 初美无痕美塑精华液是什么? 替代水光注射再也不用担心皮肤损伤和...
    诗情画意A阅读 768评论 0 0
  • 煤炭经销中心2018年专业技术职务选聘 实施方案 根据公司《神东煤炭集团专业技术人才职业发展管理办法》文件精神(神...
    包克图_1eb1阅读 539评论 0 0
  • 数字广告营销的新出路,DMChain的实力与野心 区块链与数字营销的结合虽然已经有较多项目,数字营销的应用借助区块...
    OKZ阅读 175评论 0 1
  • 一生只爱一次,一次只爱对一个人 一个人太成熟了,就缺少了许多快乐,所以在成熟与幼稚之间徘徊着 天上星星多,可惜只能...
    Janice1阅读 80评论 0 0
  • 吴云发,1930年7月出生于太湖之滨的江南水乡雪堰桥。当代著名画家。现为硕士研究生导师、江苏省高等学校高级职称评审...
    东方艺术家阅读 757评论 0 1