能力值:
( LV6,RANK:93 )
|
-
-
2 楼
真狠,还用64位考
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
就是坑爹的很啊,我搞了几天了都只吧流程搞清楚了。由于不熟悉C语言,那个解密函数还是没有理清楚,所以求助各位大牛了
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
你已经被取消资格了,赶快投别家吧
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
考试已经结束了哦,但是我还是想知道题目如何解。
|
能力值:
( LV6,RANK:80 )
|
-
-
6 楼
如果收到的长度是在0-1024之间
发送
parrot:oh!oh!oh!
parrot:收到的内容
否则发送
parrot:please don't say too much!
解密就是取反
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
IDA F5后的解密函数 是这样的,应该发送什么数据能够符合这个解密呢? 也就是说加密后的数据用这个解密 并且和 “悙悙悙”比较。。那这个如何实现?
__int64 __fastcall decryptFunction(__int64 a1)//传递过来的数据应该是指针
{
signed int i; // [sp+18h] [bp-8h]@1
signed int v3; // [sp+1Ch] [bp-4h]@0
for ( i = 0; ; ++i )//初始开始的时候i的值就已经是1了
{
*(_BYTE *)(a1 + i) = ~*(_BYTE *)(a1 + i);//取*(_BYTE *)(指针 + 1)的二进制反码
if ( i > 6 && !strncmp((const char *)(a1 + i - 6LL), "悙悙悙", 6uLL) )//如果i>6,并且比较(a1 + i)-6后的前6个字符是否不等于 悙悙悙
{
v3 = 1;
continue;//继续循环
}
if ( v3 && *(_BYTE *)(a1 + i) == -61 )//如果v3 和a1 + i == -61 循环结束
break;
}
return (unsigned int)(i + 1);//返回i +1
}
|
能力值:
( LV6,RANK:80 )
|
-
-
8 楼
悙悙悙其实
nop
-61
是retn
和你发生的数据没有关系,以上两个判断只是解密是否结束
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
那这个题应该发送什么数据过去呢?
|
|
|