Commit 238eb1b8 by sikang

udpate script

parent eae23874
# -*-coding:utf-8-*-
from func import Function
from shell import Shell
from tools.garbel.garble import Garble
from tools.garbel.activity_garble import ActivityGarble
from tools.garbel.package_garble import PackageGarble
from tools.garbel.manifest_grable import ManifestGarble
from tools. garble.garble import Garble
from tools. garble.activity_garble import ActivityGarble
from tools. garble.package_garble import PackageGarble
from tools. garble.manifest_grable import ManifestGarble
from tools.sdk_manager import SdkManager
import os
import shutil
......@@ -38,12 +39,32 @@ print("18、四大组件混淆")
print("19、包路径混淆")
print("20、插入Activity")
print("21、reset project")
print("26、启用/禁用代码")
command = int(input("请输入指令编号:"))
# 命令
if command == 1:
Shell().build_release()
#注释通话记录代码
SdkManager().start_process(config, False, "NOLOG")
#注释/开启 通讯录代码
if config['contact'] == "true":
SdkManager().start_process(config, True, "CONTACT")
else:
SdkManager().start_process(config, False, "CONTACT")
#api混淆
Garble().api_garble(config)
#字符串混淆
Garble().str_grable(config)
#四大组件类名混淆
ActivityGarble().activity_garble(config)
#包路径混淆
PackageGarble().pkg_garble(config)
#Manifest混淆
ManifestGarble().manifest_garble(config)
#旧版脚本编译(待转移)
Shell().build_release(config)
Shell().reset_project(config)
elif command == 2:
Function().new_appid(config)
......@@ -101,7 +122,10 @@ elif command == 19:
PackageGarble().pkg_garble(config)
elif command == 20:
ManifestGarble().manifest_garbel(config)
ManifestGarble().manifest_garble(config)
elif command == 21:
Shell().reset_project(config)
elif command == 26:
SdkManager().sdk_manage(config)
......@@ -5,11 +5,17 @@ import os
class Shell:
#编译 待开发
def build_release(self):
command = "%s\n%s\n" \
def build_release(self, config):
command = "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n" \
% (
"cd ../script",
"./release_builder.sh"
"cd %s"%config['root'],
"rm -rf resGuardApks",
"gradlew clean",
"cd lib_base/script/garble",
"./insert.py || { echo \"insert_code error!\"; exit 1; }",
"cd %s"%config['root'],
"gradlew resguardAppProductGoogleplayRelease",
"gradlew clean"
)
os.system(command)
......@@ -18,7 +24,7 @@ class Shell:
def push_project(self,config):
command = "%s\n%s\n%s\n%s\n" \
% (
"cd "+config['root'],
"cd %s"%config['root'],
"git add .",
"git commit -m \"%s\"" % (config['app_id'] +" " + config['version_name']),
"git push origin %s" % config['git_branch']
......
......@@ -44,6 +44,9 @@ class Garble:
return
def api_garble(self,config):
if not os.path.exists("%s/script/api_mapping"%config['root']):
print("api_mapping not found")
return
#java目录的路径
for root, dirs, files in os.walk("%s/lib_base/src/main"%config['root']):
directory = os.path.join(os.getcwd(), root)
......
import random
import os
from tools.garbel.class_builder import ClassBuilder
from tools.garble.class_builder import ClassBuilder
class ManifestGarble:
__used_names = []
......@@ -17,7 +17,7 @@ class ManifestGarble:
def __create_activities(self,path):
activities = []
for root, dirs, files in os.walk(path):
if len(files) > 0:
if len(files) > 0 and (files[0].endswith(".java") or files[0].endswith(".kt")):
for i in range(0,random.randint(3,10)):
act_name = self.__gen_rand_str()
act_path = "%s/%s.java"%(root, act_name)
......@@ -43,7 +43,7 @@ class ManifestGarble:
def manifest_garbel(self, config):
def manifest_garble(self, config):
print("generating activity ...")
app_activities = self.__create_activities("%s/app/src/main/java"%config["root"])
base_activities = self.__create_activities("%s/lib_base/src/main/java"%config["root"])
......@@ -53,3 +53,6 @@ class ManifestGarble:
self.__insert_to_manifest("%s/lib_base/src/main/AndroidManifest.xml"%config["root"],base_activities)
print("done")
if __name__ == "__main__":
ManifestGarble().manifest_garble({})
......@@ -137,5 +137,4 @@ class PackageGarble:
if __name__ == "__main__":
#project 根目录
config = {"root" : "../../../../"}
PackageGarble().pkg_garble(config)
\ No newline at end of file
PackageGarble().pkg_garble({})
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
class SdkManager:
def __disable_code(self, path, sdk):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
is_sdk_code = False
for line in lines:
if "//SDK-"+sdk+"-END" in line or "<!--SDK-"+sdk+"-END-->" in line:
is_sdk_code = False
java_mark ="//SDK-" + sdk + "-CODE ->";
xml_mark ="<!--SDK-" + sdk + "-CODE//";
if (path.endswith(".java") or path.endswith(".gradle")) and is_sdk_code and java_mark not in line:
line = java_mark + line
if path.endswith(".xml") and is_sdk_code and xml_mark not in line:
line = xml_mark + line.replace("\n","//-->\n")
if "//SDK-"+sdk+"-START" in line or "<!--SDK-"+sdk+"-START-->" in line:
is_sdk_code = True
f_w.write(line)
return
def __enable_code(self, path, sdk):
# print("processing content: %s..." % path)
code_mark = "//SDK-" + sdk + "-CODE ->"
xml_mark = "<!--SDK-" + sdk + "-CODE//"
with open(path, "r", encoding="utf-8") as f:
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if code_mark in line:
line = line.replace(code_mark,"")
if xml_mark in line:
line = line.replace(xml_mark,"").replace("//-->","")
f_w.write(line)
return
def __process_files(self, path, enable, sdk_mark):
if not os.path.isdir(path):
if enable:
self.__enable_code(path, sdk_mark)
else:
self.__disable_code(path, sdk_mark)
else:
for root, dirs, files in os.walk(path):
directory = os.path.join(os.getcwd(), root)
for file in files:
if file.endswith(".java") or file.endswith("AndroidManifest.xml") or file.endswith(".gradle"):
# get the path of the java file
path = os.path.join(directory, file)
if enable:
self.__enable_code(path, sdk_mark)
else:
self.__disable_code(path, sdk_mark)
def start_process(self, config, enable, sdk_mark):
#混淆build.gradle
self.__process_files("%s/build.gradle"% config['root'], enable, sdk_mark)
self.__process_files("%s/lib_base/build.gradle"% config['root'], enable, sdk_mark)
#混淆代码
self.__process_files("%s/app/src/main"% config['root'], enable, sdk_mark)
self.__process_files("%s/lib_base/src/main"% config['root'], enable, sdk_mark)
def sdk_manage(self, config):
print(" ")
print("1、启用SDK")
print("2、禁用SDK")
command = int(input("请输入指令编号:"))
print(" ")
print("占位的标记:ADVANCE、YITU、MOTION 等")
sdk = str(input("要操作的SDK:"))
if command == 1:
self.start_process(config, True, sdk)
else:
self.start_process(config, False, sdk)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment