咳咳咳 反编译技术 Android逆向工程师 一听就是很高大上的词汇
今天鄙人 有幸学习了一哈这反编译技术 也算是刚入门 给正在为理想奋斗的后浪们(醒醒吧 床上不香吗 梦里啥都有)给予借鉴
首先:
1.APKtool
你需要先去下载这个东西 待会会用到
链接奉上
进去你会看到是这个样子的 然后这块需要两个东西 (如图 )我箭头所指第一处的方向
apktool.bat这个 下载链接用不了了 需手动创建一个文件 复制如下代码 在将文件后缀改为.bat即可
代码如下:
@echo off
setlocal
set BASENAME=apktool_
chcp 65001 2>nul >nul
set java_exe=java.exe
if defined JAVA_HOME (
set java_exe="%JAVA_HOME%\bin\java.exe"
)
rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd "%~dp0"
if exist apktool.jar (
set BASENAME=apktool
goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
popd
setlocal DisableDelayedExpansion
rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
if "%~1"=="" goto load
if not "%~2"=="" goto load
set ATTR=%~a1
if "%ATTR:~0,1%"=="d" (
rem Directory, rebuild
set fastCommand=b
)
if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
rem APK file, unpack
set fastCommand=d
)
:load
%java_exe% -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0%BASENAME%%max%.jar" %fastCommand% %*
rem Pause when ran non interactively
for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" pause
将.bat文件保存到你测试的文件夹下面
如图所示
接下来是箭头所指第二处的位置 你需要下载apktool.jar 这个东西
你可以右键鼠标下载 也可以如上图所示这样点击直接下载
切记 下载完成之后的文件名字 他会含有版本号 需要把名称改成apktool 后缀不改
同时把需要反编译的apk文件移动到该文件夹下。
如图:
2.开始反编译
键盘输入win+r,进入cmd的windows命令行模式。
利用cd命令将命令行模式进入刚刚创建的这个文件夹下,
再输入:
apktool d 你拿到该文件下需要反编译的apk文件名.apk 然后回车
你会看到这么几行代码 然后去看文件夹 会看到有
这个问文件就是源码 但是因为apktool这个工具主要是用来解析资源res和资源AndroidManifest.xml的,
(可以看到它的图片资源啥的)除此之外的,我们还需要另外的工具来解析Java源码,利用下以下两个工具则可以用于解析Java源代码,它们分别是:dex2jar和jd-gui.
3.首先先将apk文件解析后缀为.dex的文件。
将刚才的apk文件后缀改为zip并压缩 如图:
你会看到这个东西 然后去下载 dex2jar
然后在将你的classes.dex文件剪切到dex2jar文件夹下 如图
最后再去命令行去运行 d2j-dex2jar.bat classes.dex 这行代码
你就会在classes.dex这个文件下看到有一个.jar 如上图所示
4.最后在下载jd-gui
链接奉上
下载成功之后解压打开.exe结尾的运行程序 然后把上一步最后生成的jar拖到里面即可 如图:
这里就结束了 今天的牛逼就吹到这里了 大家下期再见
备注: 啥也不是