-
-
[原创]第一题解题思路
-
发表于: 2015-10-19 22:25 11306
-
反编译apk,可以看出是在Check.smali文件中做比较。
Check.smali中的三个函数,access$_T11306是起转码作用的,把中类似unicode形式的字符串通过运算转换为正常的函数名。check函数中还使用了反射、倒序方法来混淆调用的类名。
access$_T15566比较长没仔细看。主要看的是check函数,输入字符串,输出了一个bool类型的值。因此在其中搜索return,只有12345行一个,跳转的名称是:goto_0,所以又搜索该字符串。因为返回true的时候才是通过验证的意思,所以找到了 const/4 v4, 0x1,之前有对ong型变量v4,v10作比较的操作,所以插入打印log 的语句,查看其值。
invoke-static {v4, v5}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V
invoke-static {v10, v11}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V
在Main$2$159行注入打印输入值的代码
invoke-static {v1}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V
多输入几次值,会发现:
10-18 13:00:55.189: V/AndroidKiller-string(14616): 3959
10-18 13:01:03.319: V/AndroidKiller-string(14616): 520676
10-18 13:01:03.319: V/AndroidKiller-string(14616): 128709
10-18 13:01:14.079: V/AndroidKiller-string(14616): 3960
10-18 13:01:21.969: V/AndroidKiller-string(14616): 520676
10-18 13:01:21.969: V/AndroidKiller-string(14616): 128710
v10随输入值的增加而增加,因此只需要用520676-128710+3960即可得到答案。
Check.smali中的三个函数,access$_T11306是起转码作用的,把中类似unicode形式的字符串通过运算转换为正常的函数名。check函数中还使用了反射、倒序方法来混淆调用的类名。
access$_T15566比较长没仔细看。主要看的是check函数,输入字符串,输出了一个bool类型的值。因此在其中搜索return,只有12345行一个,跳转的名称是:goto_0,所以又搜索该字符串。因为返回true的时候才是通过验证的意思,所以找到了 const/4 v4, 0x1,之前有对ong型变量v4,v10作比较的操作,所以插入打印log 的语句,查看其值。
invoke-static {v4, v5}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V
invoke-static {v10, v11}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V
在Main$2$159行注入打印输入值的代码
invoke-static {v1}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V
多输入几次值,会发现:
10-18 13:00:55.189: V/AndroidKiller-string(14616): 3959
10-18 13:01:03.319: V/AndroidKiller-string(14616): 520676
10-18 13:01:03.319: V/AndroidKiller-string(14616): 128709
10-18 13:01:14.079: V/AndroidKiller-string(14616): 3960
10-18 13:01:21.969: V/AndroidKiller-string(14616): 520676
10-18 13:01:21.969: V/AndroidKiller-string(14616): 128710
v10随输入值的增加而增加,因此只需要用520676-128710+3960即可得到答案。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
看原图
赞赏
雪币:
留言: