- UID
- 31985
注册时间2007-5-6
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
【文章标题】: 菜鸟算法7
【文章作者】: 千里之外
【作者邮箱】: [email protected]
【作者主页】: www.wm5.net.cn
【作者QQ号】: 506398911
【软件名称】: 一只老虎CRACKME1
【加壳方式】: UPX
【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: PEID OD
【作者声明】: 谢谢 fonge版主的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
--------------------------------------------------------------------------------
【详细过程】
大家好 我是千里之外 这是我从黑基论坛上下载的一个CRACKME 算法很简单 只是在对用户名做一些简单算术和逻辑运算
很适合我等菜鸟 呵呵 希望对大家有所帮助
0048C6FF |. 55 PUSH EBP
0048C700 |. 68 58C84800 PUSH CrackMe1.0048C858
0048C705 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0048C708 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0048C70B |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
0048C70E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048C711 |. 8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
0048C717 |. E8 D87EFAFF CALL CrackMe1.004345F4
0048C71C |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0048C71F |. E8 3877F7FF CALL CrackMe1.00403E5C
0048C724 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0048C727 |. E8 F079F7FF CALL CrackMe1.0040411C
0048C72C |. 83F8 0F CMP EAX,0F ; 用户名位数小于16
0048C72F |. 7F 0D JG SHORT CrackMe1.0048C73E
0048C731 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0048C734 |. E8 E379F7FF CALL CrackMe1.0040411C
0048C739 |. 83F8 05 CMP EAX,5 ; 用户名位数大于5
0048C73C |. 7D 1D JGE SHORT CrackMe1.0048C75B
0048C73E |> 6A 40 PUSH 40
0048C740 |. B9 68C84800 MOV ECX,CrackMe1.0048C868 ; 错误
0048C745 |. BA 70C84800 MOV EDX,CrackMe1.0048C870 ; 注册码错误!
0048C74A |. A1 D0EB4800 MOV EAX,DWORD PTR DS:[48EBD0]
0048C74F |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0048C751 |. E8 E279FCFF CALL CrackMe1.00454138
0048C756 |. E9 D2000000 JMP CrackMe1.0048C82D
0048C75B |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0048C75E |. E8 B979F7FF CALL CrackMe1.0040411C
0048C763 |. 85C0 TEST EAX,EAX
0048C765 |. 7E 76 JLE SHORT CrackMe1.0048C7DD
0048C767 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0048C76A |. BF 01000000 MOV EDI,1 ; edi=1 下面是对用户名的每位16进制ASCII进行一系列运算
0048C76F |> 8B45 F8 /MOV EAX,DWORD PTR SS:[EBP-8] ; 用户名 hack58
0048C772 |. 0FB67438 FF |MOVZX ESI,BYTE PTR DS:[EAX+EDI-1] ; 用户名第一位 h 68(16进制)
0048C777 |. 8BC6 |MOV EAX,ESI ; eax=68
0048C779 |. B9 17000000 |MOV ECX,17 ; ecx=17
0048C77E |. 99 |CDQ
0048C77F |. F7F9 |IDIV ECX ; eax/ecx=68/17 余数c 送DL
0048C781 |. 8BCA |MOV ECX,EDX ; ECX=C
0048C783 |. 8BC6 |MOV EAX,ESI ; EAX=68
0048C785 |. BB 11000000 |MOV EBX,11 ; EBX=11
0048C78A |. 99 |CDQ
0048C78B |. F7FB |IDIV EBX ; EAX/EBX=68/11 余数2送DL
0048C78D |. 8BDA |MOV EBX,EDX ; EBX=2
0048C78F |. 0FAFD9 |IMUL EBX,ECX ; EBX=2*C=18
0048C792 |. 8BCB |MOV ECX,EBX ; ECX=18
0048C794 |. 8BD9 |MOV EBX,ECX ; EBX=18
0048C796 |. 8BCE |MOV ECX,ESI ; ECX=68
0048C798 |. 85C9 |TEST ECX,ECX
0048C79A |. 79 03 |JNS SHORT CrackMe1.0048C79F
0048C79C |. 83C1 0F |ADD ECX,0F
0048C79F |> C1F9 04 |SAR ECX,4 ; ECX sar 4=68 sar 4=6
0048C7A2 |. 8BC3 |MOV EAX,EBX ; EAX=18
0048C7A4 |. C1E0 02 |SHL EAX,2 ; EAX SHL 3=18 shl 3=60
0048C7A7 |. 83C1 05 |ADD ECX,5 ; ECX=5+6=B
0048C7AA |. 99 |CDQ
0048C7AB |. F7F9 |IDIV ECX ; EAX=60/b=8
0048C7AD |. 8BD8 |MOV EBX,EAX ; EBX=8
0048C7AF |. 8D041F |LEA EAX,DWORD PTR DS:[EDI+EBX] ; EAX=1+8=9
0048C7B2 |. B9 1A000000 |MOV ECX,1A ; ECX=1A
0048C7B7 |. 99 |CDQ
0048C7B8 |. F7F9 |IDIV ECX ; EAX/ECX=9/1A 余数送DL=9
0048C7BA |. 83C2 41 |ADD EDX,41 ; EDX=9+41=4A
0048C7BD |. 8BDA |MOV EBX,EDX ; 4a 58 4d 46 4d 46
0048C7BF |. 8D45 EC |LEA EAX,DWORD PTR SS:[EBP-14] ; 这是每位运算的最终结果 取其ASICC字符 为 FMFMXJ
0048C7C2 |. 8BD3 |MOV EDX,EBX
0048C7C4 |. E8 7B78F7FF |CALL CrackMe1.00404044
0048C7C9 |. 8B55 EC |MOV EDX,DWORD PTR SS:[EBP-14]
0048C7CC |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C]
0048C7CF |. 8B4D F4 |MOV ECX,DWORD PTR SS:[EBP-C]
0048C7D2 |. E8 9179F7FF |CALL CrackMe1.00404168 ; 将计算结果转化为ASCII字符并到序连接
0048C7D7 |. 47 |INC EDI
0048C7D8 |. FF4D F0 |DEC DWORD PTR SS:[EBP-10]
0048C7DB |.^ 75 92 \JNZ SHORT CrackMe1.0048C76F
0048C7DD |> 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
0048C7E0 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048C7E3 |. 8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
0048C7E9 |. E8 067EFAFF CALL CrackMe1.004345F4
0048C7EE |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; 假码 123456789
0048C7F1 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] ; 真码 FMFMXJ
0048C7F4 |. E8 6F7AF7FF CALL CrackMe1.00404268
0048C7F9 |. 75 1A JNZ SHORT CrackMe1.0048C815
0048C7FB |. 6A 40 PUSH 40
0048C7FD |. B9 80C84800 MOV ECX,CrackMe1.0048C880 ; 恭喜你
0048C802 |. BA 88C84800 MOV EDX,CrackMe1.0048C888 ; 注册成功!
0048C807 |. A1 D0EB4800 MOV EAX,DWORD PTR DS:[48EBD0]
0048C80C |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0048C80E |. E8 2579FCFF CALL CrackMe1.00454138
0048C813 |. EB 18 JMP SHORT CrackMe1.0048C82D
0048C815 |> 6A 40 PUSH 40
0048C817 |. B9 68C84800 MOV ECX,CrackMe1.0048C868 ; 错误
0048C81C |. BA 70C84800 MOV EDX,CrackMe1.0048C870 ; 注册码错误!
0048C821 |. A1 D0EB4800 MOV EAX,DWORD PTR DS:[48EBD0]
0048C826 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
--------------------------------------------------------------------------------
【经验总结】
1.用户名位数在5到16之间
2.对用户名的每位16进制ASCII进行一系列运算 分析见上面
3.例如 用户名 hack58 注册码 FMFMXJ
--------------------------------------------------------------------------------
【版权声明】: 谢谢 fonge版主的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
2007年06月09日 6:01:48 |
|