|
[讨论]那些年搞驱动的那些坑_欢迎补充
KeIpiGenericCall |
|
|
|
[求助]一个加密算法的还原!
#include <stdio.h> void Decode(const unsigned char *Out, unsigned char *In) { unsigned char data1 = 0; unsigned char data2 = 0; unsigned char data3 = 0; unsigned char data4 = 0; int i; for(i = 0; i < 8; i ++) { data4 = Out[0] ^ Out[1] ^ Out[2] ^ (data1 + data1) ^ (data4 + data4); data1 = Out[0] ^ Out[3] ^ (data2 + data2) ^ data4 ^ (data4 + data4); data2 = Out[0] ^ Out[1] ^ (data1 + data1) ^ data1 ^ (data3 + data3); data3 = Out[1] ^ Out[2] ^ (data2 + data2) ^ data2 ^ (data4 + data4); } In[0] = data1; In[1] = data2; In[2] = data3; In[3] = data4; return; } int main() { unsigned char In[4] = {0};//{0x63, 0x43, 0xc9, 0x55}; unsigned char Out[4] = {0}; Out[0] = 0x9f, Out[1] = 0xeb, Out[2] = 0x4d, Out[3] = 0x85; Decode(Out, In); printf("In[0] = %02x, ", In[0]); printf("In[1] = %02x, ", In[1]); printf("In[2] = %02x, ", In[2]); printf("In[3] = %02x.\n", In[3]); if( Out[0] == (unsigned char)((In[0] + In[0]) ^ In[1] ^ (In[1] + In[1]) ^ In[2] ^ In[3]) && \ Out[1] == (unsigned char)(In[0] ^ (In[1] + In[1]) ^ (In[2] + In[2]) ^ In[2] ^ In[3]) && \ Out[2] == (unsigned char)(In[0] ^ In[1] ^ (In[2] + In[2]) ^ (In[3] + In[3]) ^ In[3]) && \ Out[3] == (unsigned char)((In[0] + In[0]) ^ In[0] ^ In[1] ^ In[2] ^ (In[3] + In[3])) ) printf("Ok.\n"); else printf("Err!!!\n"); printf("Out[0] = %02x, ", Out[0]); printf("Out[1] = %02x, ", Out[1]); printf("Out[2] = %02x, ", Out[2]); printf("Out[3] = %02x.\n", Out[3]); return 0; } |
|
[求助]一个加密算法的还原!
若计算式是: Out[0] = (In[0] + In[0]) ^ In[1] ^ (In[1] + In[1]) ^ In[2] ^ In[3]; Out[1] = In[0] ^ (In[1] + In[1]) ^ (In[2] + In[2]) ^ In[2] ^ In[3]; Out[2] = In[0] ^ In[1] ^ (In[2] + In[2]) ^ (In[3] + In[3]) ^ In[3]; Out[3] = (In[0] + In[0]) ^ In[0] ^ In[1] ^ In[2] ^ (In[3] + In[3]); 那是可逆的,并且也可以计算 |
|
[求助]一个加密算法的还原!
最好能给出明确的算法, data2[1] = data1[1] xor (data2[1] + data2[1]) xor (data3[1] + data3[1]) xor data3[1] xor data4[1] 这个data1[1] 是第一步(data1[1] + data1[1]) xor data2[1] xor (data2[1] + data2[1]) xor data3[1] xor data4[1] 计算的结果呢?还是明文data1[1]。 如果是代码就直接贴代码好了 |
|
[求助]x ^ 6 % 32 == 17 求 x ?
φ(32)= φ(2^5)= 2^4 = 16. x^6 = 17 mod 32 ==> (x^2)^3 = 17 mod 32 因((x^2)^3)^3 = x^18 = x^(18-φ(32)) = x^2 mod 32 即 17^3 = x^2 = 17 mod 32 然后再用Cipolla's algorithm求解二次剩余。 1、若指数(即例子中的6)与φ()互素,即: x^y = z mod n 因x^φ(n) = 1 mod p 令ans*y = 1 mod φ(n) 所以x^ans = x mod n 2、若φ() + 2 = 0 mod 4,计算二次剩余为: 17^((φ(32)+2)/2) = x mod 32 |
|
|
|
|
|
|
|
[讨论]感觉VT 这玩意也不是万能的
这种方法是发现不了VT的 若INT3中断地址不在断点地址列表内, 则VmxInjectEvent (TRAP_int3, GE_SOFTWARE_INTERRUPT, FALSE, 0); IDTHOOK加密正常返回 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值