发一个简单的安卓ReverseMe
本帖最后由 Mrack 于 2024-5-26 17:47 编辑最好是追码 唯一, 如果爆破的话附上成品
https://mrack.lanzoub.com/iAnrt1zqlywf
成功提示 : 注册码正确
本帖最后由 风子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;
} 我只是路过打酱油的。 你好,请问是要查看verify的代码逻辑吗?我的IDA无法查看伪代码:'(weeqw,想问一下各位大神咋弄, lexbure 发表于 2024-5-25 22:35
你好,请问是要查看verify的代码逻辑吗?我的IDA无法查看伪代码,想问一下各位大神咋弄,
https://www.52pojie.cn/thread-1640829-1-1.html#/
我用的这个,可以查看的
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();
}
} Arcticlyc 发表于 2024-5-26 01:10
https://www.52pojie.cn/thread-1640829-1-1.html#/
我用的这个,可以查看的
感谢大神 hipojie 发表于 2024-5-26 11:14
什么样算破解成功。
ReverseMe 要求别人把它的算法做出逆向分析
页:
[1]
2