Mrack 发表于 2024-5-25 19:55

发一个简单的安卓ReverseMe

本帖最后由 Mrack 于 2024-5-26 17:47 编辑

最好是追码 唯一, 如果爆破的话附上成品

https://mrack.lanzoub.com/iAnrt1zqlywf

成功提示 : 注册码正确



hipojie 发表于 2024-5-26 16:25

风子09 发表于 2024-5-26 16:56

本帖最后由 风子09 于 2024-5-26 20:44 编辑


unsigned __int8 *__fastcall start(__int64 a1, __int64 a2)
{
__int64 v2; // x0
unsigned int v3; // w1
__int64 v4; // x2
_DWORD *v5; // x3
__int64 v6; // x2
unsigned __int8 *v7; // x5
unsigned __int64 v8; // x1
int StatusReg; // w3
__int64 v10; // x4
unsigned __int64 i; // x2
char v16; // w3
unsigned __int64 j; // x0
char v19; // t1
char *v20; // x0
_BYTE *v21; // x2
unsigned __int8 *v22; // x0
unsigned int v23; // w1
__int64 v24; // x2
int v25; // t1
__int64 v26; // x0
_BYTE *v27; // x2
unsigned int v28; // w5
int v29; // w1
int v30; // w1
int v31; // w1
__int64 v32; //
__int64 v33; //
_DWORD *v34; //

v2 = ((__int64 (__fastcall *)(__int64, __int64))loc_A4C48)(a1, a2);
v32 = v2 + v3;
v33 = v4;
v34 = v5;
while ( 1 )
{
    while ( 1 )
    {
      v20 = (char *)sub_A4A20(v2);
      if ( !_CF )
      break;
      v19 = *v20;
      v2 = (__int64)(v20 + 1);
      *v21 = v19;
    }
    v22 = (unsigned __int8 *)sub_A4A38(v20);
    if ( v23 >= 3 )
    {
      v25 = *v22++;
      if ( (v25 | ((v23 - 3) << 8)) == -1 )
      break;
    }
    v26 = sub_A4A20(v22);
    v2 = sub_A4A20(v26);
    v30 = v29 + _CF + v29;
    if ( !v30 )
    {
      v2 = sub_A4A38(v2);
      v30 = v31 + 2;
    }
    if ( v28 < 0xFFFFF300 )
      ++v30;
    do
    {
      _CF = v30-- != 0;
      *v27 = v27;
      ++v27;
    }
    while ( _CF );
}
v6 = v24 - v33;
*v34 = v6;
v7 = &v22[-v32];
v8 = v33 + v6;
StatusReg = _ReadStatusReg(ARM64_SYSREG(3, 3, 0, 0, 1));
if ( (StatusReg & 0x10000000) == 0 )
{
    v10 = -4LL << (BYTE2(StatusReg) & 0xF);
    for ( i = v33 & v10; v8 > i; i -= v10 )
      __asm { SYS             #3, c7, c11, #1, X2 }
}
__dsb(0xBu);
if ( (StatusReg & 0x20000000) == 0 )
{
    v16 = StatusReg & 0xF;
    for ( j = v33 & (-4LL << v16); v8 > j; j -= -4LL << v16 )
      __asm { SYS             #3, c7, c5, #1, X0 }
}
__dsb(0xBu);
__isb(0xFu);
return v7;
}

q416 发表于 2024-5-25 21:02

我只是路过打酱油的。

lexbure 发表于 2024-5-25 22:35

你好,请问是要查看verify的代码逻辑吗?我的IDA无法查看伪代码:'(weeqw,想问一下各位大神咋弄,

Arcticlyc 发表于 2024-5-26 01:10

lexbure 发表于 2024-5-25 22:35
你好,请问是要查看verify的代码逻辑吗?我的IDA无法查看伪代码,想问一下各位大神咋弄,

https://www.52pojie.cn/thread-1640829-1-1.html#/

我用的这个,可以查看的

qq465881818 发表于 2024-5-26 10:46


public class MainActivity extends Activity {
    private static String path;

    public static native String verify(String str);

    static {
      System.loadLibrary("crackme");
    }

    @Override // android.app.Activity
    protected void onCreate(Bundle bundle) {
      super.onCreate(bundle);
      setContentView(R.layout.activity_main);
      if (!Build.SUPPORTED_ABIS.equals("arm64-v8a")) {
            Toast.makeText(this, "Unsupported architecture", 0).show();
            finish();
      }
      try {
            InputStream open = getAssets().open("cm");
            byte[] bArr = new byte;
            open.read(bArr);
            open.close();
            File file = new File(getFilesDir(), "cm");
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            fileOutputStream.write(bArr);
            fileOutputStream.close();
            path = file.getAbsolutePath();
      } catch (IOException e) {
            Toast.makeText(this, e.getMessage(), 0).show();
            finish();
      }
    }

    public void submit(View view) {
      Toast.makeText(this, verify(((EditText) findViewById(R.id.editText)).getText().toString()), 0).show();
    }
}

hipojie 发表于 2024-5-26 11:14

lexbure 发表于 2024-5-26 15:50

Arcticlyc 发表于 2024-5-26 01:10
https://www.52pojie.cn/thread-1640829-1-1.html#/

我用的这个,可以查看的

感谢大神

风子09 发表于 2024-5-26 16:22

hipojie 发表于 2024-5-26 11:14
什么样算破解成功。




ReverseMe 要求别人把它的算法做出逆向分析
页: [1] 2
查看完整版本: 发一个简单的安卓ReverseMe