EasyMoney算法分析(仅作为分析记录)
2015-06-06 10:00
211 查看
关键CALL如下:
00597279 |. 8955 FC mov dword ptr [ebp-0x4], edx ; 用户名
0059727C |. 8B45 FC mov eax, dword ptr [ebp-0x4]
0059727F |. E8 1CDDE6FF call 00404FA0
00597284 |. 33C0 xor eax, eax
00597286 |. 55 push ebp
00597287 |. 68 21745900 push 00597421
0059728C |. 64:FF30 push dword ptr fs:[eax]
0059728F |. 64:8920 mov dword ptr fs:[eax], esp
00597292 |. 8BC7 mov eax, edi
00597294 |. E8 67D8E6FF call 00404B00
00597299 |. 8B45 FC mov eax, dword ptr [ebp-0x4]
0059729C |. E8 17DBE6FF call 00404DB8
005972A1 |. 8BF0 mov esi, eax ; 计算用户名长度
005972A3 |. 85F6 test esi, esi
005972A5 |. 7E 26 jle short 005972CD
005972A7 |. BB 01000000 mov ebx, 0x1
005972AC |> 8D4D EC /lea ecx, dword ptr [ebp-0x14]
005972AF |. 8B45 FC |mov eax, dword ptr [ebp-0x4]
005972B2 |. 0FB64418 FF |movzx eax, byte ptr [eax+ebx-0x1] ; 用户名的字符user[i]
005972B7 |. 33D2 |xor edx, edx
005972B9 |. E8 1E28E7FF |call 00409ADC ; 将其ASC码值转为十六进制字串
005972BE |. 8B55 EC |mov edx, dword ptr [ebp-0x14]
005972C1 |. 8D45 F8 |lea eax, dword ptr [ebp-0x8]
005972C4 |. E8 F7DAE6FF |call 00404DC0
005972C9 |. 43 |inc ebx
005972CA |. 4E |dec esi
005972CB |.^ 75 DF \jnz short 005972AC
005972CD |> 8B45 F8 mov eax, dword ptr [ebp-0x8]
005972D0 |. E8 E3DAE6FF call 00404DB8
005972D5 |. 8BF0 mov esi, eax
005972D7 |. 85F6 test esi, esi
005972D9 |. 7E 2C jle short 00597307
005972DB |. BB 01000000 mov ebx, 0x1
005972E0 |> 8B45 F8 /mov eax, dword ptr [ebp-0x8] ; 上面的十六进制字符串
005972E3 |. E8 D0DAE6FF |call 00404DB8 ; 算字符串长度
005972E8 |. 2BC3 |sub eax, ebx
005972EA |. 8B55 F8 |mov edx, dword ptr [ebp-0x8]
005972ED |. 8A1402 |mov dl, byte ptr [edx+eax] ; 第i个字符
005972F0 |. 8D45 E8 |lea eax, dword ptr [ebp-0x18]
005972F3 |. E8 E8D9E6FF |call 00404CE0
005972F8 |. 8B55 E8 |mov edx, dword ptr [ebp-0x18] ; 第len-i个字符
005972FB |. 8D45 F4 |lea eax, dword ptr [ebp-0xC]
005972FE |. E8 BDDAE6FF |call 00404DC0
00597303 |. 43 |inc ebx
00597304 |. 4E |dec esi
00597305 |.^ 75 D9 \jnz short 005972E0 ; 这里即实现倒着输出字符串
00597307 |> 8D45 F8 lea eax, dword ptr [ebp-0x8]
0059730A |. 50 push eax
0059730B |. B9 04000000 mov ecx, 0x4 ; 长度4
00597310 |. BA 01000000 mov edx, 0x1 ; 从位置1开始
00597315 |. 8B45 F4 mov eax, dword ptr [ebp-0xC] ; 倒着输出的字符串
00597318 |. E8 F3DCE6FF call 00405010
0059731D |. 8D45 F4 lea eax, dword ptr [ebp-0xC]
00597320 |. 50 push eax
00597321 |. B9 04000000 mov ecx, 0x4 ; 长度
00597326 |. BA 05000000 mov edx, 0x5 ; 位置
0059732B |. 8B45 F4 mov eax, dword ptr [ebp-0xC] ; 倒着输出的字符串
0059732E |. E8 DDDCE6FF call 00405010 ; 取第5个位置起的4个字符
00597333 |. 8B45 F8 mov eax, dword ptr [ebp-0x8]
00597336 |. E8 7DDAE6FF call 00404DB8 ; 求长度
0059733B |. 83F8 04 cmp eax, 0x4
0059733E |. 7D 2F jge short 0059736F
00597340 |. 8B45 F8 mov eax, dword ptr [ebp-0x8]
00597343 |. E8 70DAE6FF call 00404DB8
00597348 |. 8BD8 mov ebx, eax
0059734A |. 83FB 03 cmp ebx, 0x3
0059734D |. 7F 20 jg short 0059736F
0059734F |> 8D4D E4 /lea ecx, dword ptr [ebp-0x1C]
00597352 |. 8BC3 |mov eax, ebx
00597354 |. C1E0 02 |shl eax, 0x2
00597357 |. 33D2 |xor edx, edx
00597359 |. E8 7E27E7FF |call 00409ADC
0059735E |. 8B55 E4 |mov edx, dword ptr [ebp-0x1C]
00597361 |. 8D45 F8 |lea eax, dword ptr [ebp-0x8]
00597364 |. E8 57DAE6FF |call 00404DC0
00597369 |. 43 |inc ebx
0059736A |. 83FB 04 |cmp ebx, 0x4
0059736D |.^ 75 E0 \jnz short 0059734F
0059736F |> 8B45 F4 mov eax, dword ptr [ebp-0xC]
00597372 |. E8 41DAE6FF call 00404DB8
00597377 |. 83F8 04 cmp eax, 0x4
0059737A |. 7D 2F jge short 005973AB
0059737C |. 8B45 F4 mov eax, dword ptr [ebp-0xC]
0059737F |. E8 34DAE6FF call 00404DB8
00597384 |. 8BD8 mov ebx, eax
00597386 |. 83FB 03 cmp ebx, 0x3
00597389 |. 7F 20 jg short 005973AB
0059738B |> 8D4D E0 /lea ecx, dword ptr [ebp-0x20]
0059738E |. 8BC3 |mov eax, ebx
00597390 |. C1E0 02 |shl eax, 0x2
00597393 |. 33D2 |xor edx, edx
00597395 |. E8 4227E7FF |call 00409ADC
0059739A |. 8B55 E0 |mov edx, dword ptr [ebp-0x20]
0059739D |. 8D45 F4 |lea eax, dword ptr [ebp-0xC]
005973A0 |. E8 1BDAE6FF |call 00404DC0
005973A5 |. 43 |inc ebx
005973A6 |. 83FB 04 |cmp ebx, 0x4
005973A9 |.^ 75 E0 \jnz short 0059738B
005973AB |> 8D45 F0 lea eax, dword ptr [ebp-0x10]
005973AE |. BA 38745900 mov edx, 00597438 ; money2bar698
005973B3 |. E8 E0D7E6FF call 00404B98
005973B8 |. 8D45 DC lea eax, dword ptr [ebp-0x24]
005973BB |. 50 push eax
005973BC |. B9 04000000 mov ecx, 0x4 ; 4个字符
005973C1 BA 01000000 mov edx, 0x1 ; 从位置1开始
005973C6 |. 8B45 F0 mov eax, dword ptr [ebp-0x10] ; Money2bar698,取前4个字符
005973C9 |. E8 42DCE6FF call 00405010 ; 取字符
005973CE |. FF75 DC push dword ptr [ebp-0x24]
005973D1 |. 68 50745900 push 00597450 ; -
005973D6 |. FF75 F8 push dword ptr [ebp-0x8] ; 用户名倒着的前4个字符
005973D9 |. 8D45 D8 lea eax, dword ptr [ebp-0x28]
005973DC |. 50 push eax
005973DD |. B9 05000000 mov ecx, 0x5 ; 5个字符
005973E2 |. BA 05000000 mov edx, 0x5 ; 从位置5开始
005973E7 |. 8B45 F0 mov eax, dword ptr [ebp-0x10] ; Money2bar698,
总体算法是:
首先有个常量:"Money2bar698"参与了注册码运算的.
用户名的ASC码值转为16 进制字符串,然後倒着输出,接着取"Money2bar698"前4个字符即"Mone",接上"-"变成"Mone-",再加上倒序输出的字符前4个,再加上"Money2bar698"从第5位取出长度为5的字符"y2bar",再加上用户名转换後的4-8位字符,连接而成再加上"Money2bar698"从第5位取出长度为5的字符"y2bar",再加上用户名转换後的4-8位字符,连接而成
00597279 |. 8955 FC mov dword ptr [ebp-0x4], edx ; 用户名
0059727C |. 8B45 FC mov eax, dword ptr [ebp-0x4]
0059727F |. E8 1CDDE6FF call 00404FA0
00597284 |. 33C0 xor eax, eax
00597286 |. 55 push ebp
00597287 |. 68 21745900 push 00597421
0059728C |. 64:FF30 push dword ptr fs:[eax]
0059728F |. 64:8920 mov dword ptr fs:[eax], esp
00597292 |. 8BC7 mov eax, edi
00597294 |. E8 67D8E6FF call 00404B00
00597299 |. 8B45 FC mov eax, dword ptr [ebp-0x4]
0059729C |. E8 17DBE6FF call 00404DB8
005972A1 |. 8BF0 mov esi, eax ; 计算用户名长度
005972A3 |. 85F6 test esi, esi
005972A5 |. 7E 26 jle short 005972CD
005972A7 |. BB 01000000 mov ebx, 0x1
005972AC |> 8D4D EC /lea ecx, dword ptr [ebp-0x14]
005972AF |. 8B45 FC |mov eax, dword ptr [ebp-0x4]
005972B2 |. 0FB64418 FF |movzx eax, byte ptr [eax+ebx-0x1] ; 用户名的字符user[i]
005972B7 |. 33D2 |xor edx, edx
005972B9 |. E8 1E28E7FF |call 00409ADC ; 将其ASC码值转为十六进制字串
005972BE |. 8B55 EC |mov edx, dword ptr [ebp-0x14]
005972C1 |. 8D45 F8 |lea eax, dword ptr [ebp-0x8]
005972C4 |. E8 F7DAE6FF |call 00404DC0
005972C9 |. 43 |inc ebx
005972CA |. 4E |dec esi
005972CB |.^ 75 DF \jnz short 005972AC
005972CD |> 8B45 F8 mov eax, dword ptr [ebp-0x8]
005972D0 |. E8 E3DAE6FF call 00404DB8
005972D5 |. 8BF0 mov esi, eax
005972D7 |. 85F6 test esi, esi
005972D9 |. 7E 2C jle short 00597307
005972DB |. BB 01000000 mov ebx, 0x1
005972E0 |> 8B45 F8 /mov eax, dword ptr [ebp-0x8] ; 上面的十六进制字符串
005972E3 |. E8 D0DAE6FF |call 00404DB8 ; 算字符串长度
005972E8 |. 2BC3 |sub eax, ebx
005972EA |. 8B55 F8 |mov edx, dword ptr [ebp-0x8]
005972ED |. 8A1402 |mov dl, byte ptr [edx+eax] ; 第i个字符
005972F0 |. 8D45 E8 |lea eax, dword ptr [ebp-0x18]
005972F3 |. E8 E8D9E6FF |call 00404CE0
005972F8 |. 8B55 E8 |mov edx, dword ptr [ebp-0x18] ; 第len-i个字符
005972FB |. 8D45 F4 |lea eax, dword ptr [ebp-0xC]
005972FE |. E8 BDDAE6FF |call 00404DC0
00597303 |. 43 |inc ebx
00597304 |. 4E |dec esi
00597305 |.^ 75 D9 \jnz short 005972E0 ; 这里即实现倒着输出字符串
00597307 |> 8D45 F8 lea eax, dword ptr [ebp-0x8]
0059730A |. 50 push eax
0059730B |. B9 04000000 mov ecx, 0x4 ; 长度4
00597310 |. BA 01000000 mov edx, 0x1 ; 从位置1开始
00597315 |. 8B45 F4 mov eax, dword ptr [ebp-0xC] ; 倒着输出的字符串
00597318 |. E8 F3DCE6FF call 00405010
0059731D |. 8D45 F4 lea eax, dword ptr [ebp-0xC]
00597320 |. 50 push eax
00597321 |. B9 04000000 mov ecx, 0x4 ; 长度
00597326 |. BA 05000000 mov edx, 0x5 ; 位置
0059732B |. 8B45 F4 mov eax, dword ptr [ebp-0xC] ; 倒着输出的字符串
0059732E |. E8 DDDCE6FF call 00405010 ; 取第5个位置起的4个字符
00597333 |. 8B45 F8 mov eax, dword ptr [ebp-0x8]
00597336 |. E8 7DDAE6FF call 00404DB8 ; 求长度
0059733B |. 83F8 04 cmp eax, 0x4
0059733E |. 7D 2F jge short 0059736F
00597340 |. 8B45 F8 mov eax, dword ptr [ebp-0x8]
00597343 |. E8 70DAE6FF call 00404DB8
00597348 |. 8BD8 mov ebx, eax
0059734A |. 83FB 03 cmp ebx, 0x3
0059734D |. 7F 20 jg short 0059736F
0059734F |> 8D4D E4 /lea ecx, dword ptr [ebp-0x1C]
00597352 |. 8BC3 |mov eax, ebx
00597354 |. C1E0 02 |shl eax, 0x2
00597357 |. 33D2 |xor edx, edx
00597359 |. E8 7E27E7FF |call 00409ADC
0059735E |. 8B55 E4 |mov edx, dword ptr [ebp-0x1C]
00597361 |. 8D45 F8 |lea eax, dword ptr [ebp-0x8]
00597364 |. E8 57DAE6FF |call 00404DC0
00597369 |. 43 |inc ebx
0059736A |. 83FB 04 |cmp ebx, 0x4
0059736D |.^ 75 E0 \jnz short 0059734F
0059736F |> 8B45 F4 mov eax, dword ptr [ebp-0xC]
00597372 |. E8 41DAE6FF call 00404DB8
00597377 |. 83F8 04 cmp eax, 0x4
0059737A |. 7D 2F jge short 005973AB
0059737C |. 8B45 F4 mov eax, dword ptr [ebp-0xC]
0059737F |. E8 34DAE6FF call 00404DB8
00597384 |. 8BD8 mov ebx, eax
00597386 |. 83FB 03 cmp ebx, 0x3
00597389 |. 7F 20 jg short 005973AB
0059738B |> 8D4D E0 /lea ecx, dword ptr [ebp-0x20]
0059738E |. 8BC3 |mov eax, ebx
00597390 |. C1E0 02 |shl eax, 0x2
00597393 |. 33D2 |xor edx, edx
00597395 |. E8 4227E7FF |call 00409ADC
0059739A |. 8B55 E0 |mov edx, dword ptr [ebp-0x20]
0059739D |. 8D45 F4 |lea eax, dword ptr [ebp-0xC]
005973A0 |. E8 1BDAE6FF |call 00404DC0
005973A5 |. 43 |inc ebx
005973A6 |. 83FB 04 |cmp ebx, 0x4
005973A9 |.^ 75 E0 \jnz short 0059738B
005973AB |> 8D45 F0 lea eax, dword ptr [ebp-0x10]
005973AE |. BA 38745900 mov edx, 00597438 ; money2bar698
005973B3 |. E8 E0D7E6FF call 00404B98
005973B8 |. 8D45 DC lea eax, dword ptr [ebp-0x24]
005973BB |. 50 push eax
005973BC |. B9 04000000 mov ecx, 0x4 ; 4个字符
005973C1 BA 01000000 mov edx, 0x1 ; 从位置1开始
005973C6 |. 8B45 F0 mov eax, dword ptr [ebp-0x10] ; Money2bar698,取前4个字符
005973C9 |. E8 42DCE6FF call 00405010 ; 取字符
005973CE |. FF75 DC push dword ptr [ebp-0x24]
005973D1 |. 68 50745900 push 00597450 ; -
005973D6 |. FF75 F8 push dword ptr [ebp-0x8] ; 用户名倒着的前4个字符
005973D9 |. 8D45 D8 lea eax, dword ptr [ebp-0x28]
005973DC |. 50 push eax
005973DD |. B9 05000000 mov ecx, 0x5 ; 5个字符
005973E2 |. BA 05000000 mov edx, 0x5 ; 从位置5开始
005973E7 |. 8B45 F0 mov eax, dword ptr [ebp-0x10] ; Money2bar698,
总体算法是:
首先有个常量:"Money2bar698"参与了注册码运算的.
用户名的ASC码值转为16 进制字符串,然後倒着输出,接着取"Money2bar698"前4个字符即"Mone",接上"-"变成"Mone-",再加上倒序输出的字符前4个,再加上"Money2bar698"从第5位取出长度为5的字符"y2bar",再加上用户名转换後的4-8位字符,连接而成再加上"Money2bar698"从第5位取出长度为5的字符"y2bar",再加上用户名转换後的4-8位字符,连接而成
相关文章推荐
- 41.调用随机函数产生20个整数,并输出。
- android写的猜猜看小游戏
- larbin源码之global.h
- 《Entity Framework 6 Recipes》中文翻译系列 (46) ------ 第八章 POCO之领域对象测试和仓储测试
- 工作积累(五)——使用spring@Value注解实现常量功能
- Sqoop2基础
- 流实现int_string转换
- Summary Day31
- VS-项目发布失败的解决方案1
- tomcat启动时出现以前删除的项目,导致无法启动
- win10预览版Build 10130快速版官方简体中文iso镜像下载地址
- c语言之sizeof函数
- 解密系列(系统篇_PE结构详解笔记2)
- ESX、vSphere、ESXI的区别
- openstack--计算节点安装(Node)
- 第二次冲刺期——每日站立会议——个人记录——文档
- 公司招聘中不能说的秘密,简历只有这么发才有希望
- JAVA中int转String类型有三种方法
- 解密系列(系统篇_PE结构详解笔记1)
- 作用域问题引发的血案