- UID
- 8671
注册时间2006-2-27
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 开心 2018-5-6 16:27 |
---|
签到天数: 7 天 [LV.3]偶尔看看II
|
软件名称:LRC傻瓜编辑器 V1.21
软件大小: 1210 KB
软件语言: 简体中文
软件类别: 国产软件 / 共享版 / 媒体其它
应用平台: Win9x/NT/2000/XP
加入时间: 2006-04-22 15:35:13
破解工具: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 编辑 ] |
|