飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4714|回复: 1

LRC傻瓜编辑器 V1.21算法分析

[复制链接]
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-6-26 01:02:45 | 显示全部楼层 |阅读模式
    软件名称:LRC傻瓜编辑器 V1.21
    软件大小:  1210 KB
    软件语言:  简体中文
    软件类别:  国产软件 / 共享版 / 媒体其它
    应用平台:  Win9x/NT/2000/XP
    加入时间:  2006-04-22 15:35:13
    软件介绍:
        本软件可以让你听完一首MP3歌曲,便可编辑完成一首LRC歌词。简单易用,人人都会。
    http://www3.skycn.com/soft/26569.html


    破解工具:PEID,W32DASM,OD

    +++++++++++W32DASM++++++++++++++++

    :0047B624 4E dec esi
    :0047B625 75C9 jne 0047B5F0

    * Referenced by a (U)nconditional or (C)onditional Jump at Address:
    |:0047B5E9(C)
    |
    :0047B627 8B45F4 mov eax, dword ptr [ebp-0C]
    :0047B62A E8A986F8FF call 00403CD8
    :0047B62F 83F80A cmp eax, 0000000A 。。。真码是否为10位
    :0047B632 7E26 jle 0047B65A 。。。小于则跳到47B65A处
    :0047B634 8D45E4 lea eax, dword ptr [ebp-1C]
    :0047B637 50 push eax
    :0047B638 B90A000000 mov ecx, 0000000A
    :0047B63D BA01000000 mov edx, 00000001
    :0047B642 8B45F4 mov eax, dword ptr [ebp-0C]
    :0047B645 E89688F8FF call 00403EE0
    :0047B64A 8B55E4 mov edx, dword ptr [ebp-1C]
    :0047B64D 8D45F4 lea eax, dword ptr [ebp-0C]

    * Possible StringData Ref from Code Obj ->"321"
    |
    :0047B650 B96CB74700 mov ecx, 0047B76C
    :0047B655 E8CA86F8FF call 00403D24

    * Referenced by a (U)nconditional or (C)onditional Jump at Address:
    |:0047B632(C)
    |
    :0047B65A 8D55E0 lea edx, dword ptr [ebp-20] 。。。跳来这里
    :0047B65D 8B45FC mov eax, dword ptr [ebp-04]
    :0047B660 8B8010030000 mov eax, dword ptr [eax+00000310]
    :0047B666 E8550CFBFF call 0042C2C0
    :0047B66B 8B55E0 mov edx, dword ptr [ebp-20]
    :0047B66E 8B45F4 mov eax, dword ptr [ebp-0C]
    :0047B671 E87287F8FF call 00403DE8
    :0047B676 0F85A0000000 jne 0047B71C 。。。。。。。。。。。关键跳转,不等OVER!
    :0047B67C 8B45FC mov eax, dword ptr [ebp-04]
    :0047B67F 8B80F4020000 mov eax, dword ptr [eax+000002F4]

    * Possible StringData Ref from Code Obj ->"您已经注册,多谢支持!"
    |
    :0047B685 BA78B74700 mov edx, 0047B778
    。。。。。。。。。注册成功的话软件会把注册信息写入注册表
    :0047B68A E8610CFBFF call 0042C2F0
    :0047B68F 8B45FC mov eax, dword ptr [ebp-04]
    :0047B692 8B80F8020000 mov eax, dword ptr [eax+000002F8]

    ++++++++++++++++OD++++++++++++++++
    0047B588 /. 55 PUSH EBP
    0047B589 |. 8BEC MOV EBP,ESP
    ~~~中间代码略~~~
    0047B5D2 |. 8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
    0047B5D8 |. E8 E30CFBFF CALL 1.0042C2C0
    0047B5DD |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; 用户名
    0047B5E0 |. E8 F386F8FF CALL 1.00403CD8
    0047B5E5 |. 8BF0 MOV ESI,EAX
    0047B5E7 |. 85F6 TEST ESI,ESI
    0047B5E9 |. 7E 3C JLE SHORT 1.0047B627
    0047B5EB |. BF 01000000 MOV EDI,1
    0047B5F0 |> /8B45 F8 /MOV EAX,DWORD PTR SS:[EBP-8] ; 用户名
    0047B5F3 |. |33DB |XOR EBX,EBX ; EBX清零
    0047B5F5 |. |8A5C38 FF |MOV BL,BYTE PTR DS:[EAX+EDI->; 逐位取值
    0047B5F9 |. |8BC3 |MOV EAX,EBX ; 将取值放到EAX中
    0047B5FB |. |F7EB |IMUL EBX ; EAX乘以EBX
    0047B5FD |. |F7EB |IMUL EBX ; EAX再乘以EBX
    0047B5FF |. |8945 EC |MOV DWORD PTR SS:[EBP-14],EA>; 所得的积放到EBP-14的位置
    0047B602 |. |DB45 EC |FILD DWORD PTR SS:[EBP-14] ; 将其的10进制整数到EBP-10位置
    0047B605 |. |D9FA |FSQRT ; 取它的平方根
    0047B607 |. |E8 D072F8FF |CALL 1.004028DC ; Call是取平方根的整数(四舍五入)
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    004028DC /$ 83EC 08 SUB ESP,8 ; ESP-8
    004028DF |. DF3C24 FISTP QWORD PTR SS:[ESP]
    004028E2 |. 9B WAIT
    004028E3 |. 58 POP EAX ; 弹出EAX
    004028E4 |. 5A POP EDX ; 弹出EDX
    004028E5 \. C3 RETN ; 返回
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    0047B60C |. 8BD8 |MOV EBX,EAX ; 所得的整数变成16进制放到EAX中
    0047B60E |. 8D55 E8 |LEA EDX,DWORD PTR SS:[EBP-18]
    0047B611 |. 8BC3 |MOV EAX,EBX ; EAX=EBX
    0047B613 |. E8 78CFF8FF |CALL 1.00408590 ; 转换成10进制
    0047B618 |. 8B55 E8 |MOV EDX,DWORD PTR SS:[EBP-18]
    0047B61B |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C]
    0047B61E |. E8 BD86F8FF |CALL 1.00403CE0
    0047B623 |. 47 |INC EDI ; EDI每次加1
    0047B624 |. 4E |DEC ESI ; ESI每次减1
    0047B625 |.^ 75 C9 \JNZ SHORT 1.0047B5F0 ; 逐位取值完后跳出这个循环圈
    0047B627 |> 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; 所得ASCII码排放到EAX中
    0047B62A |. E8 A986F8FF CALL 1.00403CD8 ; Call取位数
    0047B62F |. 83F8 0A CMP EAX,0A ; 位数与10比较
    0047B632 |. 7E 26 JLE SHORT 1.0047B65A ; 小于则跳,否则断续接下去进行运算操作
    0047B634 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; 上面如果跳的话就是真码,如果不跳断续来这里运算。
    0047B637 |. 50 PUSH EAX
    0047B638 |. B9 0A000000 MOV ECX,0A ; ECX等于10
    0047B63D |. BA 01000000 MOV EDX,1 ; EDX等于1
    0047B642 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; 逐位累取值放到EAX中
    0047B645 |. E8 9688F8FF CALL 1.00403EE0
    0047B64A |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C] ; Call取前面10位放到EDX中
    0047B64D |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
    0047B650 |. B9 6CB74700 MOV ECX,1.0047B76C ; ASCII "321"
    0047B655 |. E8 CA86F8FF CALL 1.00403D24 ; 作者预设码ASCII"321",排在后面组成真码
    0047B65A |> 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20] ; 取它的位数
    0047B65D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
    0047B660 |. 8B80 10030000 MOV EAX,DWORD PTR DS:[EAX+310]
    0047B666 |. E8 550CFBFF CALL 1.0042C2C0
    0047B66B |. 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20] ; 试练码
    0047B66E |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; 最终真码
    0047B671 |. E8 7287F8FF CALL 1.00403DE8 ; KeyGen
    0047B676 |. 0F85 A0000000 JNZ 1.0047B71C ; 关键跳转,不等就OVER!
    0047B67C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
    0047B67F |. 8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
    ~~~中间略~~
    0047B715 |> 8BC3 MOV EAX,EBX
    0047B717 |. E8 B476F8FF CALL 1.00402DD0
    0047B71C |> 33C0 XOR EAX,EAX ; 上面的关键跳转出错就跳来这里
    0047B71E |. 5A POP EDX
    0047B71F |. 59 POP ECX
    0047B720 |. 59 POP ECX
    0047B721 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
    0047B724 |. 68 5BB74700 PUSH 1.0047B75B
    0047B729 |> 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
    0047B72C |. E8 2783F8FF CALL 1.00403A58
    0047B731 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
    0047B734 |. BA 02000000 MOV EDX,2 ; EDX=2
    0047B739 |. E8 3E83F8FF CALL 1.00403A7C
    0047B73E |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] ; Call取真码
    0047B741 |. E8 1283F8FF CALL 1.00403A58
    0047B746 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
    0047B749 |. BA 02000000 MOV EDX,2
    0047B74E |. E8 2983F8FF CALL 1.00403A7C
    0047B753 \. C3 RETN
    0047B754 .^ E9 977DF8FF JMP 1.004034F0
    0047B759 .^ EB CE JMP SHORT 1.0047B729
    0047B75B . 5F POP EDI
    0047B75C . 5E POP ESI
    0047B75D . 5B POP EBX
    0047B75E . 8BE5 MOV ESP,EBP
    0047B760 . 5D POP EBP
    0047B761 . C3 RETN ; 返回


    ++++++++++++++++++++++++++++++++++
    算法分析:
    一、逐位取用户名的16进制值。

    二、每位用户值的立方。

    三、取它的平方根整数(四舍五入)。如果小于或等于10位,转换成10进制就是真码,否则接下去第四步。

    四、取前面10位,再加上作者预设的ASCII码:"321"最终就是真码啦。

    ————————————————
    举例1:
    用户名:W
    16进制取值:47
    它的立方:A0C47 --->10进制是:658503
    平方根:811.48197761872691200 <---10进制
    取整数得:811 ,由于它的位数小于或等于10位,所以就是真码。

    举例2:
    用户名:WildCatIII
    经过上面例1逐位取得最终的ASCII码:
    ASCII "8111076112210005489551249624624624"

    取前面10位就是:ASCII "8111076112"
    后面加上作者预设码:ASCII "321"
    最终真码就是:ASCII "8111076112321"

    举例3:
    这是zeror兄发的注册信息,我们当是验证吧。(希望zeror兄不要介意!)
    LRC傻瓜编辑器 V1.21 注册信息
    http://www.chinadforce.com/viewt ... BC%AD%C6%F7%2BV1.21



    用户名:zeror[CZG][D.4s][DFCG][BCG]
    经例1取值运算得:ASCII

    "134810151217116912178685488545988978685613123751233897868561586548598897868536548598897")
    取前面10位得:ASCII "1348101512")
    再加上作者预设码:ASCII"321"
    最终得真码为:1348101512321

    +++++++++++++++++++++++++++非常感谢您的阅览!
    本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    [ 本帖最后由 野猫III 于 2006-7-2 18:18 编辑 ]
    Wild_7jpGhEq1V2VK.gif
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-6-26 01:51:35 | 显示全部楼层
    学习,原来躲在这儿练功。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表