首页
社区
课程
招聘
MSC 2015 Android区 解题报告
发表于: 2015-10-18 21:33 2970

MSC 2015 Android区 解题报告

2015-10-18 21:33
2970
MSC 2015 Android区 解题报告
题目一:
先用apktook反编译出来源代码
java -jar apktool.jar d -d AliCrackme_1.apk -o out

C:\apktool>java -jar apktool.jar d -d AliCrackme_1.apk -o out
I: 使用 ShakaApktool 2.0.0-20150914
I: 正在加载资源列表...
I: 反编译 AndroidManifest.xml 与资源...
I: 正在从框架文件加载资源列表: C:\Documents and Settings\Administrator\apktool\framework\1.apk
I: 常规资源列表...
I: 反编译资源文件...
I: 反编译 values */* XMLs...
I: 反编译 classes.dex...
I: 复制 assets 和 libs...
I: 复制未知文件...
I: 复制原始文件...


通过看代码知道密码验证代码在:
k2015.a1.Check {
public static boolean check(String;){
return ;
}
}


进入 out\smali\k2015\a1目录,查看 Check.java文件, 查找 public static check(Ljava/lang/String;)Z 的return 行:
12343    a=0;//     move-result v4
12344    a=0;// 
12345    a=0;//     :goto_0		;会有代码跳到这儿来
12346    a=0;//     return v4

return v4 前面有个goto_0标签,找到从什么东方跳到这个,找到36188行这里:


看这里的代码:
a=0;//     cmp-long v4, v4, v10     ;比较v4,v10两long,将 v4-v10的值赋给v4
a=0;// 
a=0;//     if-nez v4, :cond_3		;如果v4不等于0,就跳到
a=0;// 
a=0;//     const/4 v4, 0x1			;等于0,就将 1赋给v4
a=0;// 
a=0;//     goto/16 :goto_0			;跳到goto_0标签(goto_0:return v4)


在 36182行前面添加System.out.println, 输出 v4, v10看是什么数值:
a=0;//		sget-object v7, Ljava/lang/System;->out:Ljava/io/PrintStream;
a=0;//
a=0;//		invoke-virtual {v7, v4, v5}, Ljava/io/PrintStream;->println(J)V
a=0;//
a=0;//		invoke-virtual {v7, v10, v11}, Ljava/io/PrintStream;->println(J)V

就成了:


代码修改好后就可以用apktook重新打包了:
java -jar apktool.jar b -d out -o debug.apk

重新签名:
JAVA -jar .\sign\signapk.JAR .\SIGN\TESTKEY.X509.PEM .\SIGN\TESTKEY.PK8 DEBUG.APK DEBUG.SIG.APK

安装:
adb install .\DEBUG.SIG.apk

动行程序,然后输入数值,点击,就可以在DDMS里查看System.out.println的输出的值:

输入 0, 点击输出的是:(DDMS的logcat图片的前两行)
520676
124750

输入 1, 点击输出的是:(DDMS的logcat图片的3、4行)
520676
124751

输入100,点击输入:(DDMS的logcat图片的5、6行)
520676
124850

520676不会改变,变的是每次输出的第二个数值,即v4和v10, 要v4==v10才能,将值1赋给v4, 再跳到 goto_0, return v4。

f(x)=520676
f(0)=124750
f(1)=124751
f(100)=124850
f(x)=124750+x
520676=124750+x
x=520676-124750=395926
得到密码 395926


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//