动态调试

要安装插件ideasmali,还要在Manifest 中把 android:debuggable=”true” 这里要是true
首先,用android killer 反编译下这个Apk.
“”
开启bluestacks
运行Cmd ,查看有没有识别到bluestacks
输入 : adb devices
“”

然后打开android studio,导入android killer刚刚反编译出的代码。
“”

选中所在目录
“”
“”

点OK,后面的保持默认选项,直接点Next.
操作完后,选择 Project
“”

如下:
“”

接下来在程序的入口位置下断点。去到 MainActivity.smali
在onCreate 函数处下断点。
“”

接着ADB调试状态启动程序。如命如下:
adb shell am start -D -n packagename/android:name
去AndroidManifest.xml文件 找 packagename 和 android:name
“”
所以输入的命令应该是:
adb shell am start -D -n com.uc.uc_crackme/.MainActivity
“”
切换到bluestacks看到:
“”
然后来配置远程调试
“”
点 + 号 ,选择 Remoter
“”
Host 为 localhost ,端口改成8700,然后ok。
“”

然后打开 Android device Monitor
“”

“”

图中的小虫子标记的程序就是我们调试的程序了。

到Android studio中,点击debug,就是下面红框中的。
“”

此时程序,就在我们之前下在onCreate 的位置出 断下了。
“”

在 run 选项下可以看到一些调试按键
“”

到这里调试程序就搞定了。

下面就是通过调试,来找到程序的key
也就是找下断点的位置了,我就不细说。直接到相应位置下断点
在 MainActivity$1.smali中的 onClick 这里下个断点
“”

这个断点是 我们输入 1234567890
“”
然后点 登陆 ,就会断到该位置,如下图:
“”

然后你想跟踪什么变量,选中该变量,鼠标右键,选下面的Add to watches
“”

变量会加到variables框里
“”
程序走到这里的时候,看到 v5中 是我们输的 1234567890
“”

接着继续走,到下面这里
“”

看到 v5 = false,应该就清楚程序大概流程了。

我们输入的1234567890,通过变换后,变成了:么广亡门义之尸弓己丸
而正确的验证应该是:义弓么丸广之
那么:么广亡门义之尸弓己丸
1 2 3 4 5 6 7 8 9 0

所以: 义弓么丸广之
5 8 1 0 2 6
“”

那么我们输入 5 8 1 0 2 6 试试,验证下我们的想法。
“”
显然,正确的key就是 5 8 1 0 2 6

当然这个题也可以通过其他方法得出Key。我这里只是借这个程序讲一下动态调试。

另外,在调试时可能会出现 Android device Monitor 中的没有运行相关的进程。
也就是模拟器bluestacks的问题。
出现下面这样的情况,解决办法就是把 bluestacks 卸载重装。
“”