-
-
[求助]一个驱动的很神奇的加密算法
-
发表于:
2018-8-7 17:32
6819
-
在做驱动的逆向,想获取驱动的
IOCTL,遇到了一个问题:
__int64 __fastcall sub_11450(__int64 a1, __int64 a2)
{
...
v2 = a2;
*(_DWORD *)(a2 + 48) = 0;
*(_QWORD *)(a2 + 56) = 0i64;
v3 = *(_QWORD *)(a2 + 184);
v4 = *(_QWORD *)(a2 + 24); //(a2 + 24) = 这就是获取用户提交的驱动码
v5 = *(_DWORD *)(v3 + 16);
if ( *(_BYTE *)v3 == 14 )
{
switch ( *((_BYTE *)qword_11A20 + (unsigned int)(*(_DWORD *)(v3 + 24) + 2147475456)) ) //swith(qword_11A20 + 用户提交的驱动码 + 2147475456 ) 这究竟是什么玩意?
{
case 0xE:
if ( v5 == 48 )
{
......
}
break;
case 0xF:
if ( v5 == 48 )
{
....
}
break;
.....
}
}
...
}
正常情况下应该是像case:
0xC3502090这样直接有驱动码了,他这里加密过了
以及qword_11A20是这样的:
__int64 qword_11A20[12] =
{
1302123038070936064i64,
1302123046660870658i64,
1302123055250805252i64,
1302123063840739846i64,
1302123111085380114i64,
1302123072430674440i64,
1302123081020609034i64,
1302123111085380114i64,
1302123089610543628i64,
1302123098200478222i64,
-3689349621033594352i64,
-3689348814741910324i64
}; // weak
百思不得其解这究竟是什么玩意的加密算法
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2018-8-7 17:34
被huojier编辑
,原因: