├── .gitignore
├── JD-GUI.app
└── Contents
│ ├── Info.plist
│ ├── MacOS
│ └── universalJavaApplicationStub.sh
│ └── Resources
│ ├── Java
│ ├── jd-gui-1.4.0.jar
│ └── jd-gui.cfg
│ └── jd-gui.icns
├── README.md
├── dex2jar
├── d2j-baksmali.sh
├── d2j-dex-recompute-checksum.sh
├── d2j-dex2jar.sh
├── d2j-dex2smali.sh
├── d2j-jar2dex.sh
├── d2j-jar2jasmin.sh
├── d2j-jasmin2jar.sh
├── d2j-smali.sh
├── d2j-std-apk.sh
├── d2j_invoke.sh
└── lib
│ ├── antlr-runtime-3.5.jar
│ ├── asm-debug-all-4.1.jar
│ ├── d2j-base-cmd-2.0.jar
│ ├── d2j-jasmin-2.0.jar
│ ├── d2j-smali-2.0.jar
│ ├── dex-ir-2.0.jar
│ ├── dex-reader-2.0.jar
│ ├── dex-reader-api-2.0.jar
│ ├── dex-tools-2.0.jar
│ ├── dex-translator-2.0.jar
│ ├── dex-writer-2.0.jar
│ └── dx-1.7.jar
└── dexlooker
├── DexUtil.py
├── DexUtil.pyc
├── __init__.py
├── __pycache__
├── DexUtil.cpython-35.pyc
├── __init__.cpython-34.pyc
└── __init__.cpython-35.pyc
├── dexlooker.py
└── dexlooker.pyc
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
--------------------------------------------------------------------------------
/JD-GUI.app/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion English
6 | CFBundleExecutable universalJavaApplicationStub.sh
7 | CFBundleName JD-GUI
8 | CFBundleGetInfoString JD-GUI version 1.4.0, Copyright 2008-2015 Emmanuel Dupuy
9 | CFBundleIconFile jd-gui.icns
10 | CFBundleIdentifier jd.jd-gui
11 | CFBundleInfoDictionaryVersion 6.0
12 | CFBundlePackageType APPL
13 | CFBundleLongVersionString 1.4.0, Copyright 2008-2015 Emmanuel Dupuy
14 | CFBundleShortVersionString 1.4.0
15 | CSResourcesFileMapped
16 | LSRequiresCarbon
17 | NSHumanReadableCopyright Copyright 2008-2015 Emmanuel Dupuy
18 | NSPrincipalClass NSApplication
19 | NSHighResolutionCapable
20 | CFBundleDocumentTypes
21 |
22 |
23 | CFBundleTypeExtensions
24 |
25 | class
26 |
27 | CFBundleTypeRole Viewer
28 | CFBundleTypeName Class File
29 | LSIsAppleDefaultForType
30 | LSTypeIsPackage
31 |
32 |
33 | CFBundleTypeExtensions
34 |
35 | java
36 |
37 | CFBundleTypeRole Viewer
38 | CFBundleTypeName Java File
39 | LSIsAppleDefaultForType
40 | LSTypeIsPackage
41 |
42 |
43 | CFBundleTypeExtensions
44 |
45 | jar
46 |
47 | CFBundleTypeName Jar File
48 | CFBundleTypeRole Viewer
49 | LSIsAppleDefaultForType
50 | LSTypeIsPackage
51 |
52 |
53 | CFBundleTypeExtensions
54 |
55 | war
56 |
57 | CFBundleTypeName War File
58 | CFBundleTypeRole Viewer
59 | LSIsAppleDefaultForType
60 | LSTypeIsPackage
61 |
62 |
63 | CFBundleTypeExtensions
64 |
65 | ear
66 |
67 | CFBundleTypeName Ear File
68 | CFBundleTypeRole Viewer
69 | LSIsAppleDefaultForType
70 | LSTypeIsPackage
71 |
72 |
73 | CFBundleTypeExtensions
74 |
75 | zip
76 |
77 | CFBundleTypeName Zip File
78 | CFBundleTypeRole Viewer
79 | LSIsAppleDefaultForType
80 | LSTypeIsPackage
81 |
82 |
83 | CFBundleTypeExtensions
84 |
85 | log
86 | txt
87 |
88 | CFBundleTypeName Log File
89 | CFBundleTypeRole Viewer
90 | LSIsAppleDefaultForType
91 | LSTypeIsPackage
92 |
93 |
94 | JavaX
95 |
96 | MainClass org.jd.gui.OsxApp
97 | JVMVersion 1.7+
98 | ClassPath $JAVAROOT/jd-gui-1.4.0.jar
99 | WorkingDirectory $JAVAROOT
100 | Properties
101 |
102 | apple.laf.useScreenMenuBar
103 | true
104 |
105 | VMOptions -Xms512m
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/JD-GUI.app/Contents/MacOS/universalJavaApplicationStub.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | ##################################################################################
3 | # #
4 | # universalJavaApplicationStub #
5 | # #
6 | # #
7 | # A shellscript JavaApplicationStub for Java Apps on Mac OS X #
8 | # that works with both Apple's and Oracle's plist format. #
9 | # #
10 | # Inspired by Ian Roberts stackoverflow answer #
11 | # at http://stackoverflow.com/a/17546508/1128689 #
12 | # #
13 | # #
14 | # @author Tobias Fischer #
15 | # @url https://github.com/tofi86/universalJavaApplicationStub #
16 | # @date 2015-05-15 #
17 | # @version 0.9.0 #
18 | # #
19 | # #
20 | ##################################################################################
21 | # #
22 | # #
23 | # The MIT License (MIT) #
24 | # #
25 | # Copyright (c) 2015 Tobias Fischer #
26 | # #
27 | # Permission is hereby granted, free of charge, to any person obtaining a copy #
28 | # of this software and associated documentation files (the "Software"), to deal #
29 | # in the Software without restriction, including without limitation the rights #
30 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #
31 | # copies of the Software, and to permit persons to whom the Software is #
32 | # furnished to do so, subject to the following conditions: #
33 | # #
34 | # The above copyright notice and this permission notice shall be included in all #
35 | # copies or substantial portions of the Software. #
36 | # #
37 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
38 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
39 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
40 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
41 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #
42 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE #
43 | # SOFTWARE. #
44 | # #
45 | ##################################################################################
46 |
47 |
48 |
49 |
50 | #
51 | # resolve symlinks
52 | #####################
53 |
54 | PRG=$0
55 |
56 | while [ -h "$PRG" ]; do
57 | ls=`ls -ld "$PRG"`
58 | link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
59 | if expr "$link" : '^/' 2> /dev/null >/dev/null; then
60 | PRG="$link"
61 | else
62 | PRG="`dirname "$PRG"`/$link"
63 | fi
64 | done
65 |
66 | # set the directory abspath of the current shell script
67 | PROGDIR=`dirname "$PRG"`
68 |
69 |
70 |
71 |
72 | #
73 | # set files and folders
74 | ############################################
75 |
76 | # the absolute path of the app package
77 | cd "$PROGDIR"/../../
78 | AppPackageFolder=`pwd`
79 |
80 | # the base path of the app package
81 | cd ..
82 | AppPackageRoot=`pwd`
83 |
84 | # set Apple's Java folder
85 | AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java
86 |
87 | # set Apple's Resources folder
88 | AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources
89 |
90 | # set Oracle's Java folder
91 | OracleJavaFolder="${AppPackageFolder}"/Contents/Java
92 |
93 | # set Oracle's Resources folder
94 | OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources
95 |
96 | # set path to Info.plist in bundle
97 | InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist
98 |
99 | # set the default JVM Version to a null string
100 | JVMVersion=""
101 |
102 |
103 |
104 | #
105 | # read Info.plist and extract JVM options
106 | ############################################
107 |
108 |
109 | # read the program name from CFBundleName
110 | CFBundleName=`/usr/libexec/PlistBuddy -c "print :CFBundleName" "${InfoPlistFile}"`
111 |
112 | # read the icon file name
113 | CFBundleIconFile=`/usr/libexec/PlistBuddy -c "print :CFBundleIconFile" "${InfoPlistFile}"`
114 |
115 |
116 | # check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode
117 | /usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1
118 | exitcode=$?
119 | JavaKey=":Java"
120 |
121 | # if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode
122 | if [ $exitcode -ne 0 ]; then
123 | /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1
124 | exitcode=$?
125 | JavaKey=":JavaX"
126 | fi
127 |
128 |
129 | # read Info.plist in Apple style if exit code returns 0 (true, :Java key is present)
130 | if [ $exitcode -eq 0 ]; then
131 |
132 | # set Java and Resources folder
133 | JavaFolder="${AppleJavaFolder}"
134 | ResourcesFolder="${AppleResourcesFolder}"
135 |
136 | APP_PACKAGE="${AppPackageFolder}"
137 | JAVAROOT="${AppleJavaFolder}"
138 | USER_HOME="$HOME"
139 |
140 |
141 | # read the Java WorkingDirectory
142 | JVMWorkDir=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:WorkingDirectory" "${InfoPlistFile}" 2> /dev/null | xargs`
143 |
144 | # set Working Directory based upon Plist info
145 | if [[ ! -z ${JVMWorkDir} ]]; then
146 | WorkingDirectory="${JVMWorkDir}"
147 | else
148 | # AppPackageRoot is the standard WorkingDirectory when the script is started
149 | WorkingDirectory="${AppPackageRoot}"
150 | fi
151 |
152 | # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
153 | WorkingDirectory=`eval "echo ${WorkingDirectory}"`
154 |
155 |
156 | # read the MainClass name
157 | JVMMainClass=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:MainClass" "${InfoPlistFile}" 2> /dev/null`
158 |
159 | # read the JVM Options
160 | JVMOptions=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:Properties" "${InfoPlistFile}" 2> /dev/null | grep " =" | sed 's/^ */-D/g' | tr '\n' ' ' | sed 's/ */ /g' | sed 's/ = /=/g' | xargs`
161 |
162 | # read StartOnMainThread
163 | JVMStartOnMainThread=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:StartOnMainThread" "${InfoPlistFile}" 2> /dev/null`
164 | if [ "${JVMStartOnMainThread}" == "true" ]; then
165 | echo ${JVMStartOnMainThread} > ~/Desktop/test.txt
166 | JVMOptions+=" -XstartOnFirstThread"
167 | fi
168 |
169 | # read the ClassPath in either Array or String style
170 | JVMClassPath_RAW=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:ClassPath" "${InfoPlistFile}" 2> /dev/null`
171 | if [[ $JVMClassPath_RAW == *Array* ]] ; then
172 | JVMClassPath=.`/usr/libexec/PlistBuddy -c "print ${JavaKey}:ClassPath" "${InfoPlistFile}" 2> /dev/null | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs`
173 | else
174 | JVMClassPath=${JVMClassPath_RAW}
175 | fi
176 | # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
177 | JVMClassPath=`eval "echo ${JVMClassPath}"`
178 |
179 | # read the JVM Default Options
180 | JVMDefaultOptions=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:VMOptions" "${InfoPlistFile}" 2> /dev/null | xargs`
181 |
182 | # read the JVM Arguments
183 | JVMArguments=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:Arguments" "${InfoPlistFile}" 2> /dev/null | xargs`
184 |
185 | # read the Java version we want to find
186 | JVMVersion=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:JVMVersion" "${InfoPlistFile}" 2> /dev/null | xargs`
187 |
188 | # read Info.plist in Oracle style
189 | else
190 |
191 | # set Working Directory and Java and Resources folder
192 | JavaFolder="${OracleJavaFolder}"
193 | ResourcesFolder="${OracleResourcesFolder}"
194 | WorkingDirectory="${OracleJavaFolder}"
195 |
196 | APP_ROOT="${AppPackageFolder}"
197 |
198 | # read the MainClass name
199 | JVMMainClass=`/usr/libexec/PlistBuddy -c "print :JVMMainClassName" "${InfoPlistFile}" 2> /dev/null`
200 |
201 | # read the JVM Options
202 | JVMOptions=`/usr/libexec/PlistBuddy -c "print :JVMOptions" "${InfoPlistFile}" 2> /dev/null | grep " -" | tr -d '\n' | sed 's/ */ /g' | xargs`
203 | # replace occurances of $APP_ROOT with it's content
204 | JVMOptions=`eval "echo ${JVMOptions}"`
205 |
206 | JVMClassPath="${JavaFolder}/*"
207 |
208 | # read the JVM Default Options
209 | JVMDefaultOptions=`/usr/libexec/PlistBuddy -c "print :JVMDefaultOptions" "${InfoPlistFile}" 2> /dev/null | grep -o "\-.*" | tr -d '\n' | xargs`
210 |
211 | # read the JVM Arguments
212 | JVMArguments=`/usr/libexec/PlistBuddy -c "print :JVMArguments" "${InfoPlistFile}" 2> /dev/null | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g' | xargs`
213 | # replace occurances of $APP_ROOT with it's content
214 | JVMArguments=`eval "echo ${JVMArguments}"`
215 | fi
216 |
217 |
218 |
219 |
220 | #
221 | # find installed Java versions
222 | #################################
223 |
224 | # first check system variable "$JAVA_HOME"
225 | if [ -n "$JAVA_HOME" ] ; then
226 | JAVACMD="$JAVA_HOME/bin/java"
227 |
228 | # check for specified JVMversion in "/usr/libexec/java_home" symlinks
229 | elif [ ! -z ${JVMVersion} ] && [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F; then
230 |
231 | if /usr/libexec/java_home -F -v ${JVMVersion}; then
232 | JAVACMD="`/usr/libexec/java_home -F -v ${JVMVersion} 2> /dev/null`/bin/java"
233 | else
234 | # display error message with applescript
235 | osascript -e "tell application \"System Events\" to display dialog \"ERROR launching '${CFBundleName}'\n\nNo suitable Java version found on your system!\nThis program requires Java ${JVMVersion}\nMake sure you install the required Java version.\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
236 | # exit with error
237 | exit 3
238 | fi
239 |
240 | # otherwise check "/usr/libexec/java_home" symlinks
241 | elif [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F; then
242 | JAVACMD="`/usr/libexec/java_home 2> /dev/null`/bin/java"
243 |
244 | # otherwise check Java standard symlink (old Apple Java)
245 | elif [ -h /Library/Java/Home ]; then
246 | JAVACMD="/Library/Java/Home/bin/java"
247 |
248 | # fallback: public JRE plugin (Oracle Java)
249 | else
250 | JAVACMD="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
251 | fi
252 |
253 | # fallback fallback: /usr/bin/java
254 | # but this would prompt to install deprecated Apple Java 6
255 |
256 |
257 |
258 |
259 | #
260 | # execute JAVA commandline and do some pre-checks
261 | ####################################################
262 |
263 | # display error message if MainClassName is empty
264 | if [ -z ${JVMMainClass} ]; then
265 | # display error message with applescript
266 | osascript -e "tell application \"System Events\" to display dialog \"ERROR launching '${CFBundleName}'!\n\n'MainClass' isn't specified!\nJava application cannot be started!\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
267 | # exit with error
268 | exit 2
269 |
270 |
271 | # check whether $JAVACMD is a file and executable
272 | elif [ -f "$JAVACMD" ] && [ -x "$JAVACMD" ] ; then
273 |
274 | # enable drag&drop to the dock icon
275 | export CFProcessPath="$0"
276 |
277 | # change to Working Directory based upon Apple/Oracle Plist info
278 | cd "${WorkingDirectory}"
279 |
280 | # execute Java and set
281 | # - classpath
282 | # - dock icon
283 | # - application name
284 | # - JVM options
285 | # - JVM default options
286 | # - main class
287 | # - JVM arguments
288 | exec "$JAVACMD" \
289 | -cp "${JVMClassPath}" \
290 | -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \
291 | -Xdock:name="${CFBundleName}" \
292 | ${JVMOptions:+$JVMOptions }\
293 | ${JVMDefaultOptions:+$JVMDefaultOptions }\
294 | ${JVMMainClass}\
295 | ${JVMArguments:+ $JVMArguments}
296 |
297 |
298 | else
299 |
300 | # display error message with applescript
301 | osascript -e "tell application \"System Events\" to display dialog \"ERROR launching '${CFBundleName}'!\n\nYou need to have JAVA installed on your Mac!\nVisit http://java.com for more information...\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
302 |
303 | # and open java.com
304 | open http://java.com
305 |
306 | # exit with error
307 | exit 1
308 | fi
309 |
--------------------------------------------------------------------------------
/JD-GUI.app/Contents/Resources/Java/jd-gui-1.4.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/JD-GUI.app/Contents/Resources/Java/jd-gui-1.4.0.jar
--------------------------------------------------------------------------------
/JD-GUI.app/Contents/Resources/Java/jd-gui.cfg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | true
7 |
8 | system
9 |
10 |
11 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/plugintest-dex2jar.jar
12 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.xiaodian-dex2jar.jar
13 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.profile-dex2jar.jar
14 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.mltrade-dex2jar.jar
15 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.mlssearch-dex2jar.jar
16 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.mlsqrcode-dex2jar.jar
17 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.mainpage-dex2jar.jar
18 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.im-dex2jar.jar
19 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.host-dex2jar.jar
20 | /Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dex2jar/com.meilishuo.detail-dex2jar.jar
21 |
22 |
23 | /Applications/JD-GUI.app/Contents/Resources/Java
24 | /Applications/JD-GUI.app/Contents/Resources/Java
25 |
26 |
27 | 0xFF6666
28 |
29 |
--------------------------------------------------------------------------------
/JD-GUI.app/Contents/Resources/jd-gui.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/JD-GUI.app/Contents/Resources/jd-gui.icns
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 集成dex2jar和JD-GUI实现命令行快速反编译查看apk文件
2 | **注意,仅限于类Unix系统(mac,Linux...),需要Python环境支持!**
3 |
4 | ## HOW TO USE
5 | ### 1.下载工程解压并复制到本地任意目录
6 | ### 2.添加本地工程地址到系统环境变量
7 | #### 2.1 打开终端,输入 open -e .bash_profile
8 | #### 2.2 添加本地工程路径至bash_profile文件并保存。例如:
9 | # dexlooker
10 | export PATH=$PATH:/Users/wangxiandeng/Documents/MyCoding/PythonWork/DexLooker/dexlooker
11 | ### 3.现在就可以使用了:在终端输入 dexlooker.py,拖入你的apk文件,将会自动为你反编译apk并打开JD-GUI查看jar文件
12 |
13 | **(喜欢的话给个star哦)**
14 |
--------------------------------------------------------------------------------
/dex2jar/d2j-baksmali.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.d2j.smali.BaksmaliCmd" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-dex-recompute-checksum.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.dex2jar.tools.DexRecomputeChecksum" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-dex2jar.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.dex2jar.tools.Dex2jarCmd" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-dex2smali.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.d2j.smali.BaksmaliCmd" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-jar2dex.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.dex2jar.tools.Jar2Dex" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-jar2jasmin.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.d2j.jasmin.Jar2JasminCmd" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-jasmin2jar.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.d2j.jasmin.Jasmin2JarCmd" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-smali.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.d2j.smali.SmaliCmd" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j-std-apk.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | # call d2j_invoke.sh to setup java environment
36 | "$PRGDIR/d2j_invoke.sh" "com.googlecode.dex2jar.tools.StdApkCmd" "$@"
37 |
--------------------------------------------------------------------------------
/dex2jar/d2j_invoke.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # dex2jar - Tools to work with android .dex and java .class files
5 | # Copyright (c) 2009-2013 Panxiaobo
6 | #
7 | # Licensed under the Apache License, Version 2.0 (the "License");
8 | # you may not use this file except in compliance with the License.
9 | # You may obtain a copy of the License at
10 | #
11 | # http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | #
19 |
20 | # copy from $Tomcat/bin/startup.sh
21 | # resolve links - $0 may be a softlink
22 | PRG="$0"
23 | while [ -h "$PRG" ] ; do
24 | ls=`ls -ld "$PRG"`
25 | link=`expr "$ls" : '.*-> \(.*\)$'`
26 | if expr "$link" : '/.*' > /dev/null; then
27 | PRG="$link"
28 | else
29 | PRG=`dirname "$PRG"`/"$link"
30 | fi
31 | done
32 | PRGDIR=`dirname "$PRG"`
33 | #
34 |
35 | _classpath="."
36 | if [ `uname -a | grep -i -c cygwin` -ne 0 ]; then # Cygwin, translate the path
37 | for k in "$PRGDIR"/lib/*.jar
38 | do
39 | _classpath="${_classpath};`cygpath -w ${k}`"
40 | done
41 | else
42 | for k in "$PRGDIR"/lib/*.jar
43 | do
44 | _classpath="${_classpath}:${k}"
45 | done
46 | fi
47 |
48 | java -Xms512m -Xmx1024m -classpath "${_classpath}" "$@"
49 |
--------------------------------------------------------------------------------
/dex2jar/lib/antlr-runtime-3.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/antlr-runtime-3.5.jar
--------------------------------------------------------------------------------
/dex2jar/lib/asm-debug-all-4.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/asm-debug-all-4.1.jar
--------------------------------------------------------------------------------
/dex2jar/lib/d2j-base-cmd-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/d2j-base-cmd-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/d2j-jasmin-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/d2j-jasmin-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/d2j-smali-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/d2j-smali-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/dex-ir-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/dex-ir-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/dex-reader-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/dex-reader-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/dex-reader-api-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/dex-reader-api-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/dex-tools-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/dex-tools-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/dex-translator-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/dex-translator-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/dex-writer-2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/dex-writer-2.0.jar
--------------------------------------------------------------------------------
/dex2jar/lib/dx-1.7.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dex2jar/lib/dx-1.7.jar
--------------------------------------------------------------------------------
/dexlooker/DexUtil.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 | # coding=utf-8
3 | import zipfile
4 | import os
5 | import os.path
6 | import shutil
7 |
8 | ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
9 | DEX2JAR_DIR = ROOT_DIR + "/dex2jar"
10 | JD_GUI_DIR = ROOT_DIR + "/JD-GUI.app"
11 |
12 |
13 | def run(apk_path):
14 | print("starting...")
15 | unzip_dir = unzip_apk(apk_path)
16 | copy_dir = DEX2JAR_DIR + "/dex/"
17 | mk_and_clean_dir(copy_dir)
18 | copy_dex_to_dir(unzip_dir, copy_dir)
19 | del_all_jar(DEX2JAR_DIR)
20 | dex2jar(DEX2JAR_DIR)
21 | open_all_jar(DEX2JAR_DIR)
22 |
23 |
24 | # 解压apk
25 | def unzip_apk(path):
26 | print("start unzip apk...")
27 | unzip_dir = os.path.splitext(path)[0]
28 | mk_and_clean_dir(unzip_dir)
29 | zipfile.ZipFile(path, "r").extractall(unzip_dir)
30 | print("unzip finish")
31 | return unzip_dir
32 |
33 |
34 | # 复制dex文件到指定目录下
35 | def copy_dex_to_dir(source_dir, target_dir):
36 | print("start copy dex...")
37 | list = os.listdir(source_dir)
38 | for line in list:
39 | filepath = os.path.join(source_dir, line)
40 | if not os.path.isdir(filepath) and filepath.find('.dex') > 0:
41 | shutil.copy(filepath, target_dir)
42 | elif os.path.isdir(filepath):
43 | copy_dex_to_dir(filepath,target_dir)
44 |
45 | print("copy finish")
46 |
47 |
48 | def mk_and_clean_dir(dir):
49 | print("clean " + dir + "...")
50 | if os.path.exists(dir):
51 | shutil.rmtree(dir)
52 | os.mkdir(dir)
53 | print("clean finish")
54 |
55 |
56 | def dex2jar(dex2jar_dir):
57 | print("start dex to jar...")
58 | os.chdir(dex2jar_dir)
59 |
60 | dex_dir = dex2jar_dir + "/dex/"
61 | list = os.listdir(dex_dir)
62 | i = 0
63 | for line in list:
64 | filepath = os.path.join(dex_dir, line)
65 | if not os.path.isdir(filepath) and filepath.find('.dex') > 0:
66 | filename = os.path.basename(filepath)
67 | os.system("./d2j-dex2jar.sh ./dex/" + filename)
68 | os.chdir(ROOT_DIR)
69 | print("dex2jar finish")
70 |
71 |
72 | # 利用JD_GUI 打开jar
73 | def open_all_jar(dir):
74 | print("start open jar...")
75 | list = os.listdir(dir)
76 | for line in list:
77 | filepath = os.path.join(dir, line)
78 | if not os.path.isdir(filepath) and filepath.find('.jar') > 0:
79 | os.system("open -a " + JD_GUI_DIR + " " + filepath)
80 |
81 |
82 | def del_all_jar(dir):
83 | print("start delete jar...")
84 | list = os.listdir(dir)
85 | for line in list:
86 | filepath = os.path.join(dir, line)
87 | if not os.path.isdir(filepath) and filepath.find('.jar') > 0:
88 | os.remove(filepath)
89 | print("delete finish")
90 |
--------------------------------------------------------------------------------
/dexlooker/DexUtil.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dexlooker/DexUtil.pyc
--------------------------------------------------------------------------------
/dexlooker/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dexlooker/__init__.py
--------------------------------------------------------------------------------
/dexlooker/__pycache__/DexUtil.cpython-35.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dexlooker/__pycache__/DexUtil.cpython-35.pyc
--------------------------------------------------------------------------------
/dexlooker/__pycache__/__init__.cpython-34.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dexlooker/__pycache__/__init__.cpython-34.pyc
--------------------------------------------------------------------------------
/dexlooker/__pycache__/__init__.cpython-35.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dexlooker/__pycache__/__init__.cpython-35.pyc
--------------------------------------------------------------------------------
/dexlooker/dexlooker.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 | #coding=utf-8
3 | import sys
4 | import os
5 | sys.path.append(sys.path[0])
6 | import DexUtil as dexutil
7 |
8 | apk_path = sys.argv[1]
9 | os.chdir(sys.path[0])
10 | dexutil.run(apk_path)
11 |
--------------------------------------------------------------------------------
/dexlooker/dexlooker.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HalfStackDeveloper/DexLooker/144986fd23b73ef3540939766102d38b2cf2b6d7/dexlooker/dexlooker.pyc
--------------------------------------------------------------------------------