好友
阅读权限10
听众
最后登录1970-1-1
|
前几天一直以为作业和讲课的东西是一回事,后来看了@_BaZzi的帖子,才知道另有作业。
这两天仔细分析了一下,
别的地方不说了,下面的代码是我对彩蛋解密的分析
00403698 . 8B45 E8 mov eax,dword ptr ss:[ebp-0x18]
0040369B . 8AD4 mov dl,ah
0040369D . C0EA 04 shr dl,0x4
004036A0 . 80E2 03 and dl,0x3
004036A3 . 8AC8 mov cl,al
004036A5 . C0E1 02 shl cl,0x2
004036A8 . 02D1 add dl,cl
004036AA . 8855 E4 mov byte ptr ss:[ebp-0x1C],dl
004036AD . 8A55 EA mov dl,byte ptr ss:[ebp-0x16]
004036B0 . 8ACA mov cl,dl
004036B2 . C0E9 02 shr cl,0x2
004036B5 . 8AC4 mov al,ah
004036B7 . C0E2 06 shl dl,0x6
004036BA . 0255 EB add dl,byte ptr ss:[ebp-0x15]
004036BD . 80E1 0F and cl,0xF
004036C0 . C0E0 04 shl al,0x4
004036C3 . 32C8 xor cl,al
004036C5 . 884D E5 mov byte ptr ss:[ebp-0x1B],cl
004036C8 . 8855 E6 mov byte ptr ss:[ebp-0x1A],dl
可以看出又是一个四字节转三字节的代码
设源码为s[0],s[1],s[2],s[3]
目标码为A[0],A[1],A[2]
则
A[0]=(s[1]>>4)&3+s[0]<<2
A[1]=(s[2]>>2)^(s[1]<<4)
A[2]=s[2]<<6+s[3]
反过来
s[0]=A[0]>>2
s[1]=(A[0]&3)<<4+A[1]>>4
s[2]=A[2]>>6+(A[1]&0xf)<<2
s[3]=A[2]&0x3f
试一下如果想得到312:A[0]~A[2]
根据解密代码
"abcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZ"
0x0c 0x33 0x04 0x32 转换为代码 mNeM
那么应该输入mNeM:s[0]~s[3]
应该就是这么解码,当然也可以通过输入更多的东西输出更长的内容,规则都是一样的,4转3。
我觉得@_BaZzi的帖子中的内容也是这么得到的。
可是@我是用户 大牛的彩蛋提示我实在不明白。
不知道是怎么个意思,哪位大牛弄出来了给讲一下吧
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|