首页
社区
课程
招聘
请帮忙分析此代码的算法
发表于: 2013-5-7 13:41 3258

请帮忙分析此代码的算法

2013-5-7 13:41
3258
最近在学习逆向,谁能帮忙分析下段代码的具体算法是什么?谢谢了。

004A59FB  |.  BE 01000000   MOV ESI,1
004A5A00  |>  8B45 FC       /MOV EAX,DWORD PTR SS:[EBP-4]
004A5A03  |.  0FB65C30 FF   |MOVZX EBX,BYTE PTR DS:[ESI+EAX-1]
004A5A08  |.  80FB 2D       |CMP BL,2D
004A5A0B  |.  74 39         |JE SHORT 004A5A46
004A5A0D  |.  0FB6C3        |MOVZX EAX,BL
004A5A10  |.  8D56 01       |LEA EDX,[ESI+1]
004A5A13  |.  8D1452        |LEA EDX,[EDX*2+EDX]
004A5A16  |.  8BCA          |MOV ECX,EDX
004A5A18  |.  03D2          |ADD EDX,EDX
004A5A1A  |.  03D2          |ADD EDX,EDX
004A5A1C  |.  03D2          |ADD EDX,EDX
004A5A1E  |.  2BD1          |SUB EDX,ECX
004A5A20  |.  33C2          |XOR EAX,EDX
004A5A22  |.  B9 23000000   |MOV ECX,23
004A5A27  |.  99            |CDQ
004A5A28  |.  F7F9          |IDIV ECX
004A5A2A  |.  8BDA          |MOV EBX,EDX
004A5A2C  |.  8D45 F0       |LEA EAX,[EBP-10]
004A5A2F  |.  0FB6541F 08   |MOVZX EDX,BYTE PTR DS:[EBX+EDI+8]

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
004A59FB  |.  BE 01000000   MOV ESI,1                             ;感觉像计数器变量
004A5A00  |>  8B45 FC       /MOV EAX,DWORD PTR SS:[EBP-4]         ;没猜错的话这里村的是注册码字符串指针
004A5A03  |.  0FB65C30 FF   |MOVZX EBX,BYTE PTR DS:[ESI+EAX-1]    ;取出字符
004A5A08  |.  80FB 2D       |CMP BL,2D                            ;比较是否是字符'-' 如果不是继续执行下面的代码
004A5A0B  |.  74 39         |JE SHORT 004A5A46
004A5A0D  |.  0FB6C3        |MOVZX EAX,BL                        ;将刚才取出的字符扩展成32位
004A5A10  |.  8D56 01       |LEA EDX,[ESI+1]                     ;edx = esi + 1
004A5A13  |.  8D1452        |LEA EDX,[EDX*2+EDX]                 ;edx = edx * 3 = (esi + 1) * 3
004A5A16  |.  8BCA          |MOV ECX,EDX                         ;存储当前edx的值在后面要用
004A5A18  |.  03D2          |ADD EDX,EDX                         ;edx *= 2
004A5A1A  |.  03D2          |ADD EDX,EDX 
004A5A1C  |.  03D2          |ADD EDX,EDX 
004A5A1E  |.  2BD1          |SUB EDX,ECX                          ;结合上面的写法edx最后的结果 edx = edx * 7
004A5A20  |.  33C2          |XOR EAX,EDX                          ;edx最后的结果 ^ 扩展后的字符
004A5A22  |.  B9 23000000   |MOV ECX,23 
004A5A27  |.  99            |CDQ
004A5A28  |.  F7F9          |IDIV ECX
004A5A2A  |.  8BDA          |MOV EBX,EDX                          ;ebx = (edx最后的结果 ^ 扩展后的字符) % 35
004A5A2C  |.  8D45 F0       |LEA EAX,[EBP-10]
004A5A2F  |.  0FB6541F 08   |MOVZX EDX,BYTE PTR DS:[EBX+EDI+8]
2013-5-7 17:04
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢楼上的分析,不过我自己昨晚已经分析完成并写出注册机。谢谢了。
2013-5-8 09:38
0
游客
登录 | 注册 方可回帖
返回
//