首页
社区
课程
招聘
[原创]第一题解题思路
发表于: 2015-10-19 22:25 11306

[原创]第一题解题思路

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即可得到答案。

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

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