Timer--bugkuCTF 偏执的太偏执、 2022-04-24 04:08 155阅读 0赞 这是一道关于安卓的反编译题,题目为时间,可能是一个提示,我这次用到了jadx、jeb、apktool软件。 首先用手机下载下来打开,发现有个数值在跳动,200000,难道是要等200000秒就会得到flag,但是时间不允许。 网上找了很多反编译软件,但是最后实用型还是jadx比较简单,直接拉入就可以得到反编译的Java伪代码,发现代码就是要200000时才得到flag,判断值为K,于是我就想改变k值直接得到flag,于是使用Java环境编译得到200000时的k值。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70] **计算得到k值为1616384.** 得到k之后就是修改原来的apk文件,使用apktool得到反编译的文件夹和JEB得到汇编地址,通过汇编地址使用notepad++找到准确位置进行修改。改变判断条件和k值 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 1] 接下来就是要对修改后的apk进行打包,这个我找了好久才找到完整且正确的方法,首先要重新打包。 apktool b -o \[打包后的apk名\].apk \[要打包的文件夹\] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 2] 因为自己打包的下载下来不能安装,缺少证书,所以接下来就是给apk安装证书,这个可以用Java生成,Java环境都会自带,只需要输入命令。 keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 3] 然后就是使用证书给修改后的apk进行签名,也是使用命令 jarsigner -verbose -keystore demo.keystore 2.apk demo.keystore ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 4] 最后用手机端下载就可以安装了,也可以得到flag。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 5] **Flag为alictf\{Y0vAr3TimerMa3te7\}** 最后我整理了一些我觉得有用的知识点 一、apktool的使用 一、第一步 将须要反编译的APK文件放到该文件夹下,打开命令行界面(执行-CMD),定位到apktool目录。输入下面 命令:apktool.bat d test.apk 二、第二步 我们可以在文件夹test中发现一个文件夹smali,这里面其实就java代码,只不过不是jar形式的,关于如何查看java源码,其实很简单的,如下: 三、第三步 把你的apk后缀名改为zip,然后解压后,就会发现有个classes.dex,这里面就是java源码了。 四、第四步 我们需要吧dex文件转为jar格式的文件,用到了一个工具叫dex2jar。 五、第五步 现在把dex文件拷贝到dex2jar-2.0目录下。 六、第六步 cmd窗口进入dex2jar-2.0,然后输入命令:d2j-dex2jar.bat classes.dex回车,完成后在dex2jar-2.0目录下 就会多了个classes-dex2jar.jar文件,这个就是我们需要的jar文件。 七、第七步 接下来查看java代码了借用一个工具jd-gui,然后用它打开classes-dex2jar.jar就可以了 二、smail Smali基本语法 .field private isFlag:z 定义变量 .method 方法 .parameter 方法参数 .prologue 方法开始 .line 12 此方法位于第12行 invoke-super 调用父函数 const/high16 v0, 0x7fo3 把0x7fo3赋值给v0 invoke-direct 调用函数 return-void 函数返回void .end method 函数结束 new-instance 创建实例 iput-object 对象赋值 iget-object 调用对象 invoke-static 调用静态函数 条件跳转分支: "if-eq vA, vB, :cond_**" 如果vA等于vB则跳转到:cond_** "if-ne vA, vB, :cond_**" 如果vA不等于vB则跳转到:cond_** "if-lt vA, vB, :cond_**" 如果vA小于vB则跳转到:cond_** "if-ge vA, vB, :cond_**" 如果vA大于等于vB则跳转到:cond_** "if-gt vA, vB, :cond_**" 如果vA大于vB则跳转到:cond_** "if-le vA, vB, :cond_**" 如果vA小于等于vB则跳转到:cond_** "if-eqz vA, :cond_**" 如果vA等于0则跳转到:cond_** "if-nez vA, :cond_**" 如果vA不等于0则跳转到:cond_** "if-ltz vA, :cond_**" 如果vA小于0则跳转到:cond_** "if-gez vA, :cond_**" 如果vA大于等于0则跳转到:cond_** "if-gtz vA, :cond_**" 如果vA大于0则跳转到:cond_** "if-lez vA, :cond_**" 如果vA小于等于0则跳转到:cond_** 三、一键反编译 一、反编译 apktool.bat d test.apk 二、修改smali 三、打包 重新打包:apktool b -o [打包后的apk名].apk [要打包的文件夹] 四、签名 java环境本身带着相应的keytool工具。 (1)首先生成证书。命令为:keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore 其中: keytool是工具名称, -genkey 产生证书文件 -alias 产生别名 -keystore 指定密钥库的.keystore文件中 -keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法) -validity 为证书有效天数,这里我们写的是40000天 提示信息如下: 输入keystore密码: 再次输入新密码: 您的名字与姓氏是什么? [Unknown]: test 您的组织单位名称是什么? [Unknown]: test 您的组织名称是什么? [Unknown]: 您所在的城市或区域名称是什么? [Unknown]: 您所在的州或省份名称是什么? [Unknown]: 该单位的两字母国家代码是什么 [Unknown]: CN=test, OU=test, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 正确吗? [否]: y 输入<demo.keystore>的主密码 (如果和 keystore 密码相同,按回车) (2)重签名。命令为:jarsigner -verbose -keystore demo.keystore 2.apk demo.keystore 其中: -verbose 指定生成详细输出 -keystore 指定数字证书存储路径 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70]: /images/20220220/5a44cb161cc64bf6926ac3284120a590.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 1]: /images/20220220/43f0aacb5c524be49bc90c8316e93082.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 2]: /images/20220220/438b0a033a3b4507ab3de91b8005f6ea.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 3]: /images/20220220/f1f2d80365354d2caf8834cff6b5dd32.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 4]: /images/20220220/c3f16327695644daba6a4a0c7f3db101.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 5]: /images/20220220/44971c78a68e435585a6fa828afad893.png
还没有评论,来说两句吧...