-
-
只看内存值的分析
-
发表于:
2012-11-16 22:45
4656
-
貌似不能再在新人交流区发帖了。。。
后面的代码也不知道哪里才是正真的算法部分
004064F0 /$ 8BD1 mov edx,ecx
004064F2 |. 57 push edi
004064F3 |. B9 10000000 mov ecx,10
004064F8 |. 33C0 xor eax,eax
004064FA |. 8D7A 04 lea edi,dword ptr ds:[edx+4]
004064FD |. C702 B00D4300 mov dword ptr ds:[edx],Tracy.00430DB0
00406503 |. F3:AB rep stos dword ptr es:[edi]
00406505 |. 8942 48 mov dword ptr ds:[edx+48],eax
00406508 |. 8942 44 mov dword ptr ds:[edx+44],eax
0040650B |. C742 4C 01234>mov dword ptr ds:[edx+4C],67452301
00406512 |. C742 50 89ABC>mov dword ptr ds:[edx+50],EFCDAB89
00406519 |. C742 54 FEDCB>mov dword ptr ds:[edx+54],98BADCFE
00406520 |. C742 58 76543>mov dword ptr ds:[edx+58],10325476
00406527 |. 8BC2 mov eax,edx
00406529 |. 5F pop edi
0040652A \. C3 retn
可以知道是MD5.
上面一段代码运行后在内存这些地方进行了写入:
接着运行:
红框框里面的值发生了变化,框内的64位是我接受的数据包的前64位内容,可后面的05900000 00000000不知道是怎么得来的?
再经过一个算法CALL后,内存处变化如下:
最终算法还没完成,继续跟进:
下一个call后的此处的内存:
而后内存换为我收到的数据包的后面51的字符:
再在后面补上一个:0800 0000
这个就是补足64位?可是数了一下,并没有到64位啊。
继续跟进,又出现了0590 0000 0000 0000
在经过一个很长的算法call后,先前存放0123456789……的地方又发生了变化:
而这个值就是最后的校验码。
问题是如下:
1.前面有打“?”的地方的解释。
2.加密的内容有哪些?
3.加密的原理是什么?
谢谢了。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课