0%

2020吾爱破解论坛春节红包前三题 Writeup

解题方法并不唯一,仅供参考。

题目打包下载地址

https://down.52pojie.cn/Challenge/Happy_New_Year_2020_Challenge.rar

第一题 送分题

关注“吾爱破解论坛”微信公众号,回复指定字符串即可获得本题正确口令。

第二题 Windows 初级题

使用PEiD查壳,得知该程序是UPX壳,并修改了区段名。于是使用OD脱壳,再用ImportREConstructor修复IAT。
再次查壳,得到Borland Delphi v3.0 *。故使用IDR爱盘下载地址)进行分析。
查看窗体,定位到关键函数TForm1.edtPwdChange

其中对输入字符串进行切片,然后分别进行md5计算,并与以下字符比较:
E7EE5F4653E31955CACC7CD68E2A7839
ea6b2efbdd4255a9f1b3bbc6399b58f4
c8d46d341bea4fd5bff866a65ff8aea9
反查md5并拼接即可得到52pojie2019game
输入进行校验,得到提示:

将该字符串回复到公众号即可获得本题正确口令。

第三题 Android 初级题

使用AndroidKiller反编译,打开MainActivity.smali,发现checkFlagonClick方法被nativie化了。
于是使用IDA打开libcrack_j2c.so,定位到onClick方法,可以发现是通过JNI反射调用Java方法。由此可以大致分析出程序流程:
首先获取输入框文本,对长度进行判断,为30则调用checkFlag方法进行检查
checkFlag方法中,定位到关键位置:

由此可知,安装并打开该APP后,输入30位长度的字符串,点击确定就会调用equals方法
于是使用Frida进行hook,打印出调用该方法的参数和实例内容,从而得到真码:
ed61f6308c74bcf35c71729d4db24c
将该字符串回复到公众号即可获得本题正确口令。
Frida脚本如下:

1
2
3
4
5
6
7
8
9
10
11
if(Java.available)
{
Java.perform(function(){
var String= Java.use('java.lang.String');
String.equals.overload("java.lang.Object").implementation=function(obj){
console.log(this.toString());
console.log(obj);
return this.equals(obj);
}
});
}

此处应有分割线

祝各位身体健康,心想事成!