菜鸟算法7
【文章标题】: 菜鸟算法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:
0048C708|.64:8920 MOV DWORD PTR FS:,ESP
0048C70B|.8D55 F8 LEA EDX,DWORD PTR SS:
0048C70E|.8B45 FC MOV EAX,DWORD PTR SS:
0048C711|.8B80 04030000 MOV EAX,DWORD PTR DS:
0048C717|.E8 D87EFAFF CALL CrackMe1.004345F4
0048C71C|.8D45 F4 LEA EAX,DWORD PTR SS:
0048C71F|.E8 3877F7FF CALL CrackMe1.00403E5C
0048C724|.8B45 F8 MOV EAX,DWORD PTR SS:
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:
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:
0048C74F|.8B00 MOV EAX,DWORD PTR DS:
0048C751|.E8 E279FCFF CALL CrackMe1.00454138
0048C756|.E9 D2000000 JMP CrackMe1.0048C82D
0048C75B|>8B45 F8 MOV EAX,DWORD PTR SS:
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:,EAX
0048C76A|.BF 01000000 MOV EDI,1 ;edi=1 下面是对用户名的每位16进制ASCII进行一系列运算
0048C76F|>8B45 F8 /MOV EAX,DWORD PTR SS: ;用户名 hack58
0048C772|.0FB67438 FF |MOVZX ESI,BYTE PTR DS: ;用户名第一位 h68(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 ;ECXsar 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: ;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: ;这是每位运算的最终结果 取其ASICC字符 为 FMFMXJ
0048C7C2|.8BD3 |MOV EDX,EBX
0048C7C4|.E8 7B78F7FF |CALL CrackMe1.00404044
0048C7C9|.8B55 EC |MOV EDX,DWORD PTR SS:
0048C7CC|.8D45 F4 |LEA EAX,DWORD PTR SS:
0048C7CF|.8B4D F4 |MOV ECX,DWORD PTR SS:
0048C7D2|.E8 9179F7FF |CALL CrackMe1.00404168 ;将计算结果转化为ASCII字符并到序连接
0048C7D7|.47 |INC EDI
0048C7D8|.FF4D F0 |DEC DWORD PTR SS:
0048C7DB|.^ 75 92 \JNZ SHORT CrackMe1.0048C76F
0048C7DD|>8D55 E8 LEA EDX,DWORD PTR SS:
0048C7E0|.8B45 FC MOV EAX,DWORD PTR SS:
0048C7E3|.8B80 08030000 MOV EAX,DWORD PTR DS:
0048C7E9|.E8 067EFAFF CALL CrackMe1.004345F4
0048C7EE|.8B45 E8 MOV EAX,DWORD PTR SS: ;假码 123456789
0048C7F1|.8B55 F4 MOV EDX,DWORD PTR SS: ;真码 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:
0048C80C|.8B00 MOV EAX,DWORD PTR DS:
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:
0048C826|.8B00 MOV EAX,DWORD PTR DS:
--------------------------------------------------------------------------------
【经验总结】
1.用户名位数在5到16之间
2.对用户名的每位16进制ASCII进行一系列运算 分析见上面
3.例如 用户名 hack58 注册码 FMFMXJ
--------------------------------------------------------------------------------
【版权声明】:谢谢 fonge版主的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
2007年06月09日 6:01:48 楼主厉害,收藏回家学习 向楼主学习,呵呵 厉害,算法真不错,学习了
页:
[1]