-
-
[原创]kx3答案分析
-
发表于: 2017-6-7 11:26 3990
-
[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
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)