-
-
[原创]kx3答案分析
-
2017-6-7 11:26 3500
-
[sub 004081F0]
检测输入合法性:[0,9] [a,f]
[004082F4] - 72a3d170
从该地址判断key长度为:16
[004083BE] - 72a3d170
该处判断key的前8位的校验和 大于 后8位校验和
[004085FC] - 72a3d170
该处判断。。。
a = 前8位的十六进制值
b = 后8位的十六进制值
c = 1711722997
v4 = c^2*2
v5 = a^2*v4
v6 = b^4+v5
v7 = c^4+v6
v8 = b^2*v4+v7
v9 = a^2*2*(b^2)+v8
v10 = a^4+v9
v11 = v10^0.5/2
v12 = v11/(c+a+b)
(a^4+a^2*2*(b^2)+b^2*c^2*2+c^4+b^4+a^2*c^2*2)^0.5/((c+a+b)*2) = 874402299.931726
(a^4+a^2*2*(b^2)+b^2*c^2*2+c^4+b^4+a^2*c^2*2)^0.5 = 874402299.931726*(c+a+b)*2
a^2+b^2+c^2 = 874402299.931726*(c+a+b)*2
v13 = c*a*b
v14 = (c+a+b)*(cb)*(ca)*(ac)
v15 = v13/(v14^0.5)
(c*a*b)/([(c+a+b)*(cb)*(ca)*(ac)]^0.5) == 373414231.362502
c*a*b == 373414231.362502 * ([(c+a+b)*(cb)*(ca)*(ac)]^0.5)
得到两公式。。。正在用穷举法跑结果,不确定公式是否正确
a,b,c是整数---右边结果也必须是整数
a^2+b^2+c^2 = 874402299.931726*(c+a+b)*2
左边正数---a+b+c是正数
c*a*b == 373414231.362502 * ([(c+a+b)*(cb)*(ca)*(ac)]^0.5)
右边有根号---连乘的结果必须是正数
a+b+c是正数---假设cb为正数,ca为负数,则ac为正数 X
假设ca为正数,cb为负数,则ac为正数 X
假设cb为正数,ca为正数,当a+b>c并且|a-b|<c时,ac为正数 √
假设a、b为一正一负,则a>b+c,与a<b+c矛盾 X
则a、b均为正数,a大于b,a+b>c并且a-b<c
#include "stdafx.h"
#include <math.h>
#include <Windows.h>
#define MAX_NUM 0x7FFFFFFF
int _tmain(int argc, _TCHAR* argv[])
{
double dTmp = 0.0;
double fc = 1711722997;
double fFun1c = 373414231.362502;
double fFun2c = 874402299.931726*2;
double dwFun1L = 0;
double dwFun1R = 0;
double dwFun2L = 0;
double dwFun2R = 0;
DWORD dwNum = 0;
DWORD dwTime = GetTickCount();
// i == b
for (DWORD i = 0; i < MAX_NUM; ++i)
{
// j == a
for (DWORD j = (DWORD)fc-i; j < (DWORD)fc+i; ++j)
{
dwFun1L = fc*i*j;
dTmp = (fc+i+j)*(fcj)*(fci)*(ifc);
if (dTmp < 0)
continue;
dwFun1R = fFun1c*sqrt(dTmp);
if (dwFun1L == dwFun1R)
{
printf(" fun1 i = %d j = %d", i, j);
}
else
continue;
dwFun2L = pow(fc, 2)+pow((double)i, 2)+pow((double)j, 2);
dwFun2R = fFun2c*(fc+i+j);
if (dwFun2L == dwFun2R)
{
printf(" fun2 i = %d j = %d", i, j);
goto Exit0;
}
}
if (dwNum++ == 0x4000)
{
printf("running i=%d", i);
dwNum = 0;
}
}
Exit0:
printf("use time %d", GetTickCount() - dwTime);
return 0;
}
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法