某萌新APP破解永久激活
本帖最后由 stwhome58 于 2024-11-13 15:44 编辑## 前言
大家好,我是石头娃,一名Android逆向作者,今天给大家带来一篇Android软件某萌新逆向教程。
## 准备工具
* Android Studio
* (https://github.com/skylot/jadx)
* (https://github.com/LSPosed/LSPatch)
* [某萌新APP](http://xmx.wwimm.top/#1)
## 教程开始
1. 抓激活码接口,发现http接口并直接返回字符串。尝试修改为【激活成功!】,居然直接通过验证。
2. 找到hook的对应接口,使用lspatch修改返回数据。
3. 通过查找TextView的文本找到校验激活码的接口代码。
```java
private void textViewLog() {
XposedHelpers.findAndHookMethod("android.widget.TextView", getApplicationClassLoader(), "setText", CharSequence.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
if (param.args != null && param.args.length > 0 && param.args != null) {
String text = param.args.toString();
if (text.contains("激活码错误或冻结")) {
XposedBridge.log(text);
printStackTrace();
}
}
}
});
}
```
```java
private void printStackTrace() {
Throwable ex = new Throwable();
StackTraceElement[] stackElements = ex.getStackTrace();
for (int i = 0; i < stackElements.length; i++) {
StackTraceElement element = stackElements;
XposedBridge.log("at " + element.getClassName() + "." + element.getMethodName() + "(" + element.getFileName() + ":" + element.getLineNumber() + ")");
}
}
```
4. 根据堆栈日志找到对应的代码
5. 使用jadx反编译
6. 使用lspatch修改接口返回值
```java
private void successHook() {
XposedHelpers.findAndHookMethod("i.Api.100000007.100000006", getApplicationClassLoader(),
"Result", String.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
if (param.args != null && param.args.length == 1 && param.args != null) {
param.args = "激活成功!";
}
}
});
}
```
7. 成功进入,效果图
8. 某萌新还需要单独安装下配置器(鸡肋,不清楚为嘛),分析后好像就新建了一个文件目录(支持.txt)。hook掉!
```java
private void newTargetFile() {
try {
// 在 SD 卡目录下创建一个名为 "支持.txt" 的目录
File sdcard = Environment.getExternalStorageDirectory();
File supportDir = new File(sdcard, targetFileName);
if (!supportDir.exists()) {
boolean dirCreated = supportDir.mkdirs();
if (dirCreated) {
XposedBridge.log("targetFile created");
} else {
XposedBridge.log("targetFile Failed to create directory");
}
} else {
XposedBridge.log("targetFile Directory already exists");
}
} catch (Exception e) {
XposedBridge.log(e);
}
}
```
9. 测试功能需要SD卡权限,需要开启一下!!!
先好好看看,再学习 看看,学习一下 看看怎么个事 准备入坑,学习一下 看一下怎么个事儿 厉害学习学习 微信分身版吗 学习一下 好东西啊啊啊按