{"id":13389584,"url":"https://github.com/chenxiancai/STCObfuscator","last_synced_at":"2025-03-13T14:31:30.856Z","repository":{"id":62454420,"uuid":"104449590","full_name":"chenxiancai/STCObfuscator","owner":"chenxiancai","description":"iOS全局自动化 代码混淆 工具！支持cocoapod组件代码一并 混淆，完美避开hardcode方法、静态库方法和系统库方法！","archived":false,"fork":false,"pushed_at":"2019-03-25T04:02:44.000Z","size":13221,"stargazers_count":827,"open_issues_count":28,"forks_count":188,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-03-12T20:09:47.412Z","etag":null,"topics":["anti-reversing","confuse","ios","linkmap","obfuscator","objective-c","reverse-engineering","runtime"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chenxiancai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-22T08:16:40.000Z","updated_at":"2025-03-04T07:51:05.000Z","dependencies_parsed_at":"2022-11-02T00:01:36.719Z","dependency_job_id":null,"html_url":"https://github.com/chenxiancai/STCObfuscator","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxiancai%2FSTCObfuscator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxiancai%2FSTCObfuscator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxiancai%2FSTCObfuscator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenxiancai%2FSTCObfuscator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenxiancai","download_url":"https://codeload.github.com/chenxiancai/STCObfuscator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243285616,"owners_count":20266848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anti-reversing","confuse","ios","linkmap","obfuscator","objective-c","reverse-engineering","runtime"],"created_at":"2024-07-30T13:01:21.107Z","updated_at":"2025-03-13T14:31:30.816Z","avatar_url":"https://github.com/chenxiancai.png","language":"Objective-C","readme":"# STCObfuscator\n\n```\nSTCObfuscator 是用来进行object-c代码混淆的工具，在模拟器DEBUG环境下运行生成混淆宏，\n混淆的宏可以在其他环境下进行编译，支持Cocoapod代码混淆.\n```\n\n## 怎么使用!\n\n相关博客：https://blog.csdn.net/cating1314/article/details/80189295\n\n```\n如果你的工程支持cocoapod,你可以直接添加！\npod \"STCObfuscator\"(注：请用最新版本，最好更新下master repo)\n\n把下面的代码加入到Appdelegate didFinishLaunchingWithOptions方法里，\n\n#import \"STCObfuscator.h\"\n\n#if (DEBUG == 1)\n    [[STCObfuscator obfuscatorManager] confuseWithRootPath:[NSString stringWithFormat:@\"%s\", STRING(ROOT_PATH)] resultFilePath:[NSString stringWithFormat:@\"%@/STCDefination.h\", [NSString stringWithFormat:@\"%s\", STRING(ROOT_PATH)]] linkmapPath:[NSString stringWithFormat:@\"%s\", STRING(LINKMAP_FILE)]];\n#endif\n\n然后完成下面步骤的设置\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_18.png)\n\n\n#### 步骤1、\n```\n在 Build Settings-\u003ePreprocessor Macros-\u003eDEBUG 中添加环境变量\nLINKMAP_FILE=$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt \n和\nROOT_PATH=\"${SRCROOT}\" \n（注：工程尽量不要放在中文路径下）\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_17.png)\n\n#### 步骤2、\n```\n在 Build Settings 开启Write Link Map File, 设置成 YES\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_16.png)\n\n\n#### 步骤3、\n```\n将下面的脚本添加到 Build Phases\n```\n```\ndir=${SRCROOT}\nfile_count=0\nfile_list=`ls -R $dir 2\u003e /dev/null | grep -v '^$'`\nfor file_name in $file_list\ndo\ntemp=`echo $file_name | sed 's/:.*$//g'`\nif [ \"$file_name\" != \"$temp\" ]; then\ncur_dir=$temp\nelse\nif [ ${file_name##*.} = a ]; then\n    find -P $dir -name $file_name \u003e tmp.txt\n    var=$(cat tmp.txt)\n    nm $var \u003e ${file_name}.txt\n    rm tmp.txt\nfi\nif [ ${file_name##*.} = framework ]; then\n    find -P $dir -name ${file_name%%.*} \u003e tmp.txt\n    var=$(cat tmp.txt)\n    nm $var \u003e ${file_name}.txt\n    rm tmp.txt\n    fi\nfi\ndone\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_15.png)\n\n\n#### 步骤4、\n```\n在预编译文件最前面中添加以下代码\n#if (DEBUG != 1)\n#import \"STCDefination.h\"\n#endif\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_19.png)\n\n\n#### 步骤5、\n```\n在DEBUG环境下用模拟器运行工程，在STCDefination.h头文件中生成混淆的宏。\n所有的混淆符号会保留在工程目录下的confuse.json。 \n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_20.png)\n```\n可用于bug上报后反混淆的文件\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_26.png)\n\n\n#### 步骤6、\n```\n把工程目录下STCDefination.h头文件加入工程。\n混淆后，如果工程增加代码，需要再次混淆，先清空STCDefination.h里面的内容，不能留任何空格和换行，然后pod update，再次在模拟器DEBUG环境下运行。\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_21.png)\n\n\n\n\n#### 步骤7、\n```\n在 RELEASE 环境下运行工程，实现代码混淆。 \n```\n```\n混淆前逆向。 \n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_25.png)\n```\n混淆后逆向。 \n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/Snip20180510_24.png)\n\n\n\n\n# English steps ⬇︎\n\n\n```\nSTCObfuscator is an Objective-C obfuscator for Mach-O executables, \na runtime utility for obfuscating Objective-C class,it also support cocoapod file confusing!\n```\n\n## How to use it!\n```\nYou can use STCObfuscator with cocoapod!\npod \"STCObfuscator\"\n```\n\n```\nafter you add under code to your project\n\n#import \"STCObfuscator.h\"\n\n#define STRING(str) _STRING(str)\n#define _STRING(str) #str\n\n#if (DEBUG == 1)\n    [[STCObfuscator obfuscatorManager] confuseWithRootPath:[NSString stringWithFormat:@\"%s\", STRING(ROOT_PATH)] resultFilePath:[NSString stringWithFormat:@\"%@/STCDefination.h\", [NSString stringWithFormat:@\"%s\", STRING(ROOT_PATH)]] linkmapPath:[NSString stringWithFormat:@\"%s\", STRING(LINKMAP_FILE)]];\n#endif\n\nyou should finish steps:\n```\n\n#### step 1、\n```\nadd \nLINKMAP_FILE=$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt \nand \nROOT_PATH=\"${SRCROOT}\" \nto Build Settings Preprocessor Macros \n```\n\n#### step 2、\n```\nenable Write Link Map File in Build Settings, set YES\n```\n\n#### step 3、\n```\nadd shell script to Build Phases\n```\n```\ndir=${SRCROOT}\nfile_count=0\nfile_list=`ls -R $dir 2\u003e /dev/null | grep -v '^$'`\nfor file_name in $file_list\ndo\ntemp=`echo $file_name | sed 's/:.*$//g'`\nif [ \"$file_name\" != \"$temp\" ]; then\ncur_dir=$temp\nelse\nif [ ${file_name##*.} = a ]; then\n    find -P $dir -name $file_name \u003e tmp.txt\n    var=$(cat tmp.txt)\n    nm $var \u003e ${file_name}.txt\n    rm tmp.txt\nfi\nif [ ${file_name##*.} = framework ]; then\n    find -P $dir -name ${file_name%%.*} \u003e tmp.txt\n    var=$(cat tmp.txt)\n    nm $var \u003e ${file_name}.txt\n    rm tmp.txt\n    fi\nfi\ndone\n```\n\n#### step 4、\n```\nimport STCDefination.h to PrefixHeader File like this:\n#if (DEBUG != 1)\n#import \"STCDefination.h\"\n#endif\n```\n\n#### step 5、\n```\nrun project in DEBUG environment with iPhone simulator to generate confuse macros in STCDefination.h.\nall confused symbols will save to confuse.json in project catalog. \n```\n\n#### step 6、\n```\nadd STCDefination.h.\n```\n\n#### step 7、\n```\nrun project in RELEASE environment that class confused. \n```\n\n##\n```\n技术交流或合作讨论请加QQ群\n```\n![image](https://github.com/chenxiancai/STCObfuscator/raw/master/WechatIMG62.jpeg)\n\n\n","funding_links":[],"categories":["Objective-C","Objective-C (33)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenxiancai%2FSTCObfuscator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenxiancai%2FSTCObfuscator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenxiancai%2FSTCObfuscator/lists"}