首页
社区
课程
招聘
[求助]大家看看这个加密算法怎么分析
发表于: 2009-1-1 21:53 3029

[求助]大家看看这个加密算法怎么分析

2009-1-1 21:53
3029
大家好 问问大家一段注册码算法怎么分析的

--------------------------------------------------------------------------------------------------------

004677E0    55              PUSH EBP
004677E1    8BEC            MOV EBP,ESP
004677E3    83C4 E8         ADD ESP,-18
004677E6    53              PUSH EBX
004677E7    56              PUSH ESI
004677E8    57              PUSH EDI
004677E9    33C9            XOR ECX,ECX
004677EB    894D EC         MOV DWORD PTR SS:[EBP-14],ECX
004677EE    894D E8         MOV DWORD PTR SS:[EBP-18],ECX
004677F1    8BF0            MOV ESI,EAX
004677F3    8D7D F0         LEA EDI,DWORD PTR SS:[EBP-10]
004677F6    A5              MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
004677F7    A5              MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
004677F8    A5              MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
004677F9    A5              MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
004677FA    8BFA            MOV EDI,EDX
004677FC    33C0            XOR EAX,EAX
004677FE    55              PUSH EBP
004677FF    68 7B784600     PUSH fbi1.0046787B
00467804    64:FF30         PUSH DWORD PTR FS:[EAX]
00467807    64:8920         MOV DWORD PTR FS:[EAX],ESP
0046780A    8BC7            MOV EAX,EDI
0046780C    E8 7FCFF9FF     CALL fbi1.00404790   
MOV BL,10
LEA ESI,DWORD PTR SS:[EBP-10]
PUSH DWORD PTR DS:[EDI]            ; 局部变量[EDI]保存本数据段的总长度
LEA EAX,DWORD PTR SS:[EBP-14]  ; [EBP-14]指向本段的开始(从段类型算起)
XOR EDX,EDX
MOV DL,BYTE PTR DS:[ESI]             ; 依次移入算好后的字符到dl
SHR EDX,4                                      ; EDX数值÷16
AND EDX,0F                                    ; 取1位
MOV DL,BYTE PTR DS:[EDX+488064]  ; 出现前1位 'a'

--------------------------------------------------------------------------------------------------------
MOV BL,10
解释:BL=B0

LEA ESI,DWORD PTR SS:[EBP-10]
解释:堆栈地址=0012ECB4
ESI=0012ED48

PUSH DWORD PTR DS:[EDI]            ; 局部变量[EDI]保存本数据段的总长度
解释:堆栈 DS:[0012ED20]=00000000

LEA EAX,DWORD PTR SS:[EBP-14]  ; [EBP-14]指向本段的开始(从段类型算起)
解释:堆栈地址=0012ECB0
EAX=0012ED20

XOR EDX,EDX
解释:EDX=00000000

MOV DL,BYTE PTR DS:[ESI]             ; 依次移入算好后的字符到dl
堆栈 DS:[0012ECB4]=A7                ; 问题?这个怎么出现的,怎么知道这个是A7了
DL=00

SHR EDX,4                                      ; EDX数值÷16
解释:EDX=000000A7

AND EDX,0F                                    ; 取1位
解释:EDX=0000000A

MOV DL,BYTE PTR DS:[EDX+488064]  ; 出现前1位 'a'
解释:DS:[0048806E]=61 ('a')       ; 这个就是注册码的前一位,但是也不明白怎么计算出来的
DL=0A (Line Feed)

我不明白最后一步“a”怎么来的?大家能帮我看看怎么分析吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 193
活跃值: (872)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
我真正学习破解才半个月,但是大学学过汇编,可能一些个人的分析不是很正确,希望大家能耐心帮我分析注册算法,万分感谢。这个视频算法好像是MD5加密的,脱壳后不能运行,只能带壳破解。
2009-1-1 21:56
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
你连什么叫“动态分析”都还没搞清楚。

不知道你要问什么。

OD信息栏给出的信息,并不是计算出来的,只是显示出它本来的值。计算过程的分析是靠人来分析的!

你看你的问题
MOV DL,BYTE PTR DS:[ESI] ; 依次移入算好后的字符到dl
堆栈 DS:[0012ECB4]=A7 ; 问题?这个怎么出现的,怎么知道这个是A7了
DL=00


因为执行到这一句后,内存[0012ecb4]中的值就是0xA7,OD就提示你现在它的值是A7,这还有什么怎么来的不怎么来的?
2009-1-2 16:18
0
游客
登录 | 注册 方可回帖
返回
//