新出炉的入门级crackMe
新出炉的~~要求写出算法:keai
只能上传1M,我用ZIP分割了。
下载后请修改下和上面图片一样的扩展名,压缩即可。
n函数比较简单,看源码就知道了,不用改直接调用,后面是字符串转数字后异或0x1256,把它逆写一下,源码如下:
#include <stdio.h>
#include <string.h>
int __cdecl n(char *a1)
{
int v2;//
char v3; //
int v4;//
int i; //
v4 = 0;
for (i = 0; a1; ++i)
{
v3 = a1;
if (v3 < 65)
break;
if (v3 <= 90)
v2 = v3;
else
v2 = v3 - 32;
v4 += v2;
}
return v4 ^ 0x9988;
}
int __cdecl keygen(char *v4)
{
int v6 = n(v4);
int v7 = v6 ^ 0x1256;
char code = {0};
int v2 = v7;
int i;
for (i = 0; v2 > 10; ++i)
{
code = v2 % 10 + 48;
v2 = v2 / 10;
}
code = v2 + 48;
printf("keygen:%s", code);
return 0;
}
int main()
{
char user = {0};
printf("please input name:");
scanf("%s", user);
keygen(user);
return 0;
}
本帖最后由 weikun444 于 2019-5-15 09:00 编辑
小白表示只能到这里了。
__int64 __fastcall Java_com_cm_shuair_crackme1_MainActivity_stringFromJNI(_JNIEnv *a1, __int64 a2, __int64 a3, __int64 a4)
{
__int64 v4; // ST28_8
char *v5; // ST20_8
char *v6; // ST18_8
int v7; // ST14_4
_JNIEnv *v9; //
__int64 v10; //
v9 = a1;
v4 = a4;
v5 = (char *)Jstring2CStr(a1, a3);
v6 = (char *)Jstring2CStr(v9, v4);
v7 = n(v5);
if ( v7 == (unsigned int)c(v6) )
v10 = _JNIEnv::NewStringUTF(v9, (const char *)&unk_1193);
else
v10 = _JNIEnv::NewStringUTF(v9, (const char *)&unk_11CA);
return v10;
}
__int64 __fastcall _JNIEnv::NewStringUTF(_JNIEnv *this, const char *a2)
{
return (*(__int64 (**)(void))(*(_QWORD *)this + 1336LL))();
} 楼主,说好的入门级的呢,为什么搜不到注册失败?{:1_909:} 好好。。。 看来楼主把关键的代码用jni规避掉了 608岁的老头 发表于 2019-5-15 08:33
看来楼主把关键的代码用jni规避掉了
楼主,是不是要对so文件动手? 感谢分享 以后学习都得知道他过程特征。就像易语言,知道过程如何调用,才厉害。破解过程能够还原软件写的过程,或者各种调用,这才是大神吧 鼓励发帖!鼓励发帖!鼓励发帖! 按钮点击事件,关键在stringFromJNI
stringFromJNI函数内容,关键在n(v4)、c(v5)
n(v4)函数内容
c(v5)函数内容