Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lib_base
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sikang
lib_base
Commits
084f18f0
Commit
084f18f0
authored
Oct 21, 2019
by
sikang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
2fe74124
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
230 additions
and
0 deletions
+230
-0
python/.vscode/.ropeproject/config.py
+114
-0
python/.vscode/.ropeproject/objectdb
+0
-0
python/tools/garbel/package_garble.py
+116
-0
No files found.
python/.vscode/.ropeproject/config.py
0 → 100644
View file @
084f18f0
# The default ``config.py``
# flake8: noqa
def
set_prefs
(
prefs
):
"""This function is called before opening the project"""
# Specify which files and folders to ignore in the project.
# Changes to ignored resources are not added to the history and
# VCSs. Also they are not returned in `Project.get_files()`.
# Note that ``?`` and ``*`` match all characters but slashes.
# '*.pyc': matches 'test.pyc' and 'pkg/test.pyc'
# 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc'
# '.svn': matches 'pkg/.svn' and all of its children
# 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o'
# 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o'
prefs
[
'ignored_resources'
]
=
[
'*.pyc'
,
'*~'
,
'.ropeproject'
,
'.hg'
,
'.svn'
,
'_svn'
,
'.git'
,
'.tox'
]
# Specifies which files should be considered python files. It is
# useful when you have scripts inside your project. Only files
# ending with ``.py`` are considered to be python files by
# default.
# prefs['python_files'] = ['*.py']
# Custom source folders: By default rope searches the project
# for finding source folders (folders that should be searched
# for finding modules). You can add paths to that list. Note
# that rope guesses project source folders correctly most of the
# time; use this if you have any problems.
# The folders should be relative to project root and use '/' for
# separating folders regardless of the platform rope is running on.
# 'src/my_source_folder' for instance.
# prefs.add('source_folders', 'src')
# You can extend python path for looking up modules
# prefs.add('python_path', '~/python/')
# Should rope save object information or not.
prefs
[
'save_objectdb'
]
=
True
prefs
[
'compress_objectdb'
]
=
False
# If `True`, rope analyzes each module when it is being saved.
prefs
[
'automatic_soa'
]
=
True
# The depth of calls to follow in static object analysis
prefs
[
'soa_followed_calls'
]
=
0
# If `False` when running modules or unit tests "dynamic object
# analysis" is turned off. This makes them much faster.
prefs
[
'perform_doa'
]
=
True
# Rope can check the validity of its object DB when running.
prefs
[
'validate_objectdb'
]
=
True
# How many undos to hold?
prefs
[
'max_history_items'
]
=
32
# Shows whether to save history across sessions.
prefs
[
'save_history'
]
=
True
prefs
[
'compress_history'
]
=
False
# Set the number spaces used for indenting. According to
# :PEP:`8`, it is best to use 4 spaces. Since most of rope's
# unit-tests use 4 spaces it is more reliable, too.
prefs
[
'indent_size'
]
=
4
# Builtin and c-extension modules that are allowed to be imported
# and inspected by rope.
prefs
[
'extension_modules'
]
=
[]
# Add all standard c-extensions to extension_modules list.
prefs
[
'import_dynload_stdmods'
]
=
True
# If `True` modules with syntax errors are considered to be empty.
# The default value is `False`; When `False` syntax errors raise
# `rope.base.exceptions.ModuleSyntaxError` exception.
prefs
[
'ignore_syntax_errors'
]
=
False
# If `True`, rope ignores unresolvable imports. Otherwise, they
# appear in the importing namespace.
prefs
[
'ignore_bad_imports'
]
=
False
# If `True`, rope will insert new module imports as
# `from <package> import <module>` by default.
prefs
[
'prefer_module_from_imports'
]
=
False
# If `True`, rope will transform a comma list of imports into
# multiple separate import statements when organizing
# imports.
prefs
[
'split_imports'
]
=
False
# If `True`, rope will remove all top-level import statements and
# reinsert them at the top of the module when making changes.
prefs
[
'pull_imports_to_top'
]
=
True
# If `True`, rope will sort imports alphabetically by module name instead
# of alphabetically by import statement, with from imports after normal
# imports.
prefs
[
'sort_imports_alphabetically'
]
=
False
# Location of implementation of
# rope.base.oi.type_hinting.interfaces.ITypeHintingFactory In general
# case, you don't have to change this value, unless you're an rope expert.
# Change this value to inject you own implementations of interfaces
# listed in module rope.base.oi.type_hinting.providers.interfaces
# For example, you can add you own providers for Django Models, or disable
# the search type-hinting in a class hierarchy, etc.
prefs
[
'type_hinting_factory'
]
=
(
'rope.base.oi.type_hinting.factory.default_type_hinting_factory'
)
def
project_opened
(
project
):
"""This function is called after opening the project"""
# Do whatever you like here!
python/.vscode/.ropeproject/objectdb
0 → 100644
View file @
084f18f0
File added
python/tools/garbel/package_garble.py
View file @
084f18f0
# -*-coding:utf-8-*-
import
glob
,
os
import
string
import
random
class
ActivityGarble
:
target
=
[
"Activity.java"
,
"Bean.java"
,
"Fragment.java"
,
"Receiver.java"
,
"CertifyActiviy.java"
,
"BaseApplication.java"
,
"ContactEntity.java"
,
"SmsEntity.java"
,
"ActivityCenter.java"
,
"Service.java"
,
"Collector.java"
,
"BannerMessageDto.java"
,
"BasicAck.java"
,
"InviteResult.java"
,
"LoanAppBeanFatherStatusLogs.java"
,
"LoanRange.java"
,
"PhotoInfo.java"
,
"IncomeMessageProto.java"
,
"ResponseErrorBody.java"
,
"RecordFilesResponse.java"
,
"TotalAmount.java"
,
"UserBankInfo.java"
,
"YWUser.java"
,
"TDChannel.java"
]
used_names
=
[]
activity_mapping
=
{}
#随机串
def
__gen_rand_str
(
self
):
rand_str
=
''
.
join
(
random
.
choices
(
string
.
ascii_uppercase
+
string
.
ascii_lowercase
,
k
=
8
))
while
rand_str
in
self
.
used_names
:
rand_str
=
''
.
join
(
random
.
choices
(
string
.
ascii_uppercase
+
string
.
ascii_lowercase
,
k
=
8
))
self
.
used_names
.
append
(
rand_str
)
return
rand_str
#替换文件内容
def
__process_file_content
(
self
,
path
,
file_name
):
# print("processing content: %s..."%path)
with
open
(
path
,
"rt"
)
as
fin
:
file_content
=
fin
.
read
()
# replace the file content based on mangle settings
for
(
src
,
dst
)
in
self
.
activity_mapping
.
items
():
separator
=
[
" "
,
"."
,
"
\"
"
,
"{"
,
"}"
,
"("
,
")"
,
"["
,
"]"
,
"<"
,
">"
,
":"
,
";"
,
","
]
for
sep
in
separator
:
file_content
=
file_content
.
replace
(
src
+
sep
,
dst
+
sep
)
ext
=
os
.
path
.
splitext
(
file_name
)[
1
]
if
ext
==
'.java'
:
comment
=
"// machine renamed:
%
s
\n
"
%
file_name
file_content
=
"
%
s
%
s"
%
(
comment
,
file_content
)
with
open
(
path
,
"wt"
)
as
fout
:
fout
.
write
(
file_content
)
return
#查找所有待混淆类 并重命名
def
__find_pkgs
(
self
,
path
):
for
root
,
dirs
,
files
in
os
.
walk
(
path
):
for
dir
in
dirs
:
directory
=
os
.
path
.
join
(
os
.
getcwd
(),
root
)
for
file
in
files
:
is_activity
=
False
for
file_name
in
self
.
target
:
if
file
.
endswith
(
file_name
):
is_activity
=
True
if
is_activity
:
name
=
os
.
path
.
splitext
(
file
)[
0
]
if
name
not
in
self
.
activity_mapping
.
keys
():
self
.
activity_mapping
[
name
]
=
self
.
__gen_rand_str
()
src
=
os
.
path
.
join
(
directory
,
file
)
dst
=
os
.
path
.
join
(
directory
,
"
%
s.java"
%
self
.
activity_mapping
[
name
])
os
.
rename
(
src
,
dst
)
#遍历混淆文件
def
__process_files
(
self
,
path
):
for
root
,
dirs
,
files
in
os
.
walk
(
path
):
directory
=
os
.
path
.
join
(
os
.
getcwd
(),
root
)
for
file
in
files
:
if
file
.
endswith
(
".java"
):
self
.
__process_file_content
(
os
.
path
.
join
(
directory
,
file
),
file
)
#四大组件混淆
def
activity_garble
(
self
,
config
):
#遍历包
print
(
"find activity..."
)
self
.
__find_pkgs
(
"
%
s/app/src/main/java"
%
config
[
'root'
])
self
.
__find_pkgs
(
"
%
s/lib_base/src/main/java"
%
config
[
'root'
])
#开始混淆
print
(
"start garble .java..."
)
self
.
__process_files
(
"
%
s/app/src/main"
%
config
[
'root'
])
self
.
__process_files
(
"
%
s/lib_base/src/main"
%
config
[
'root'
])
#混淆AndroidManifest.xml
print
(
"start garble 混淆AndroidManifest.xml ..."
)
manifest_path
=
os
.
path
.
join
(
"
%
s/app/src/main/"
%
config
[
'root'
],
"AndroidManifest.xml"
)
self
.
__process_file_content
(
manifest_path
,
"AndroidManifest.xml"
)
lib_manifest_path
=
os
.
path
.
join
(
"
%
s/lib_base/src/main/"
%
config
[
'root'
],
"AndroidManifest.xml"
)
self
.
__process_file_content
(
lib_manifest_path
,
"AndroidManifest.xml"
)
print
(
"done"
)
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment