本帖最后由 nisodaisuki 于 2020-5-26 15:05 编辑
2020网鼎杯玄武组vulcrack
附件解压出来为一个apk文件。
查壳
所以第一步要进行脱壳。
这里利用frida 框架脱壳。具体的frida使用方法可以自行百度。
脱出来为2个dex文件。
转成jar进行分析
分析这两个类。
写出逆方法得到flag
package org.nisodaisuki.vulcrack;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.io.UnsupportedEncodingException;
public class MainActivity extends AppCompatActivity {
public static String keyFirst = "Zm1jan85NztBN0c0NjJIOzJGLzc8STk0OTZFSDE=";
public static String keySecond = "QTpISTlFNEkxRTY8fQ==";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println(calcFlagFirstStep());
System.out.println(calcFlagSecondStep());
}
public static String calcFlagFirstStep() {
return comm(Base64.decodeToString(keyFirst), 8);
}
public static String calcFlagSecondStep() {
return comm(Base64.decodeToString(keySecond), 4);
}
public static String comm(String str, int i) {
byte[] bytes = str.getBytes();
for (byte b = 0; b < bytes.length; b = (byte) (b + 1)) {
bytes[b] = (byte) ((byte) (bytes[b] - (b % i)));
}
try {
return new String(bytes, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return "";
}
}
}
|