前几天做这道题的时候学到了安卓逆向的一波操作,所以在此记录一下,首先我们需要Android studio + smailidea + apktool box + jeb四样东西,smailidea是Android studio的一个插件,能够对smail文件操作从而动态调试apk,可以从https://bitbucket.org/JesusFreke/smali/downloads/下载
首先我们拿到apk,第一时间是打开模拟器安装,大概知道apk有什么功能(这里我用的逍遥安卓模拟器),
大概就是输入key然后验证key的过程,然后我们在正式开始动态调试需要配置我们的环境
1.
到虚拟机的目录下找一个adb.exe的程序,
命令行模式下输入
adb.exe devices
就会返回你模拟器所在的端口
2.
打开Android studio然后安装smalidea-0.05插件,点击File->Settings->plugins->instal plugins from disk,选择下载的zip包就行,不要解压。安装完成后,AS提示重启生效,重启即可
3
然后我们进入到Android sdk的目录==>platform tools,可以看到又有一个adb.exe
进入命令行,输入
adb.exe connect 127.0.0.1:21503 (跟第二步中获取到的模拟器的端口)
可以看到sdk现在已经连接到模拟器的端口了
4
然后我们需要获取到app的包名和Activity名,这里我们可以利用Android sdk/build-tools里的aapt.exe工具
进入到Android sdk/build-tools目录,启动命令行
aapt dump badging FindPass_200.apk(<apk文件路径>)
这里的apk包名和Activity名分别是 com.example.findpass 和 com.example.findpass.MainActivity
5
然后我们反编译我们的apk文件,这里用到的是apktool box工具,
用Android studio导入反编译后的文件,然后
设置为可以调试的
接下来再配置我们的debug键
6
然后我们再Android studio的命令行下打命令
adb shell am start -D -n apk包名/.MainActivity
成功以后,模拟器会出现这样,等待我们debug
然后我们要看模拟器中启动app的进程号
adb shell ps
可以看到我们app的进程号是3269
接下来要让我们Android studio设置的remote端口连接到app的这个端口
adb forward tcp:8700 jdwp:3269
6#接下来,我们随便设置一个断点,然后debug程序
在app下任意输入点确定
这题我们单步步过慢慢调试
最后发现flag
网友评论