兄弟Keygen的界面好漂亮的说!
GGLHY 发表于 2011-3-24 08:23 https://www.chinapyg.com/images/common/back.gif
呵呵,结合背景音乐的话,感觉会更好一点哦。
不是有很多人说搞破解的淫,无审美嘛。所以,就打造一个比较有审美感的注册机出来抗 议一下啰。
我昨天把这个注册机展示给我的死党看时,他说了句:“F U C K ! 注册机也搞得这么有感觉,太没天理了!”
----------------------------------
其实,这些外表都不是很重要,里面的算法才是有价值的东东。
以后我要把重点放在攻C语言和算法上了,这个是道坎啊,学起来相当艰辛。 为各位加分了!
speedboy 发表于 2011-3-24 16:29 https://www.chinapyg.com/images/common/back.gif
多谢兄弟加分哦! /:good
这个要来顶起呢 支持樓主,來學習了。 前排学习,顶下兄弟了! 本帖最后由 foxjinlin 于 2011-3-27 12:12 编辑
贴上GGLHY大侠的算法分析注解(说得比较透彻哦):
---------------------------------------------------------------------------
004D7DA8/$55 PUSH EBP
004D7DA9|.8BEC MOV EBP,ESP
004D7DAB|.6A 00 PUSH 0
004D7DAD|.6A 00 PUSH 0
004D7DAF|.6A 00 PUSH 0
004D7DB1|.53 PUSH EBX
004D7DB2|.56 PUSH ESI
004D7DB3|.8BF1 MOV ESI,ECX
004D7DB5|.8955 FC MOV DWORD PTR SS:,EDX
004D7DB8|.8B45 FC MOV EAX,DWORD PTR SS:
004D7DBB|.E8 A0D6F2FF CALL liteserv.00405460
004D7DC0|.33C0 XOR EAX,EAX
004D7DC2|.55 PUSH EBP
004D7DC3|.68 657E4D00 PUSH liteserv.004D7E65
004D7DC8|.64:FF30 PUSH DWORD PTR FS:
004D7DCB|.64:8920 MOV DWORD PTR FS:,ESP
004D7DCE|.837D FC 00 CMP DWORD PTR SS:,0
004D7DD2|.75 09 JNZ SHORT liteserv.004D7DDD
004D7DD4|.8BC6 MOV EAX,ESI
004D7DD6|.E8 C9D1F2FF CALL liteserv.00404FA4
004D7DDB|.EB 6D JMP SHORT liteserv.004D7E4A
004D7DDD|>8D45 F8 LEA EAX,DWORD PTR SS:
004D7DE0|.BA 7C7E4D00 MOV EDX,liteserv.004D7E7C ;ASCII "Try BUYING LiteServe"
004D7DE5|.E8 52D2F2FF CALL liteserv.0040503C
004D7DEA|.BB 01000000 MOV EBX,1
004D7DEF|>8B45 FC /MOV EAX,DWORD PTR SS: ;用户名
004D7DF2|.E8 81D4F2FF |CALL liteserv.00405278
004D7DF7|.50 |PUSH EAX ;用户名长度
004D7DF8|.8BC3 |MOV EAX,EBX
004D7DFA|.48 |DEC EAX
004D7DFB|.5A |POP EDX
004D7DFC|.8BCA |MOV ECX,EDX
004D7DFE|.99 |CDQ
004D7DFF|.F7F9 |IDIV ECX
004D7E01|.8B45 FC |MOV EAX,DWORD PTR SS: ;用户名(重复到20位为止)
004D7E04|.8A0410 |MOV AL,BYTE PTR DS: ;依次用户名ASC
004D7E07|.8B55 F8 |MOV EDX,DWORD PTR SS: ;Try BUYING LiteServe
004D7E0A|.8A541A FF |MOV DL,BYTE PTR DS: ;依次取固定字符串Try BUYING LiteServe每位ASC
004D7E0E|.32C2 |XOR AL,DL ;XOR
004D7E10|.25 FF000000 |AND EAX,0FF
004D7E15|.8D55 F4 |LEA EDX,DWORD PTR SS:
004D7E18|.E8 DF21F3FF |CALL liteserv.00409FFC ;XOR的结果转成10进制
004D7E1D|.8B45 F4 |MOV EAX,DWORD PTR SS: ;转成的10进制
004D7E20|.E8 53D4F2FF |CALL liteserv.00405278
004D7E25|.8B55 F4 |MOV EDX,DWORD PTR SS:
004D7E28|.8A4402 FF |MOV AL,BYTE PTR DS: ;10进制的个位的ASC
004D7E2C|.50 |PUSH EAX
004D7E2D|.8D45 F8 |LEA EAX,DWORD PTR SS:
004D7E30|.E8 93D6F2FF |CALL liteserv.004054C8
004D7E35|.5A |POP EDX
004D7E36|.885418 FF |MOV BYTE PTR DS:,DL ;当前10进制的个位替换固定字符串当前所取得位数上的字符
004D7E3A|.43 |INC EBX
004D7E3B|.83FB 15 |CMP EBX,15 ;固定字符串的长度=20(EBX初始为1)
004D7E3E|.^ 75 AF \JNZ SHORT liteserv.004D7DEF
004D7E40|.8BC6 MOV EAX,ESI
004D7E42|.8B55 F8 MOV EDX,DWORD PTR SS:
004D7E45|.E8 AED1F2FF CALL liteserv.00404FF8
依次取用户名20位(不足则重复取用户名直到20为止)每位ASCxor (固定字符串Try BUYING LiteServe)每一位ASC;xor后的结果转10进制,取10进制的个位直至20位,就是注册码了
注意观察用户名在这个循环中的变化,想想看为何004D7DF7处PUSH EAX会来压入用户名长度?为何004D7E3B处会有CMP EBX,15?
把循环跑完,跑的时候注意看下信息窗口和堆栈、内存数据窗口就明白了!
------------------------------------------------------------------------------ 下载算法注册机源码 谢谢了
页:
1
[2]