精装友情通讯录算法分析也在看雪发了得的是优
【破文标题】精装友情通讯录算法分析【破文作者】wangweilll
【作者邮箱】309661415@qq.com
【作者主页】309661415@qq.com
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】精装友情通讯录
【软件大小】956 KB
【软件类别】 应用软件/信息管理
【软件语言】中文
【更新时间】2008-3-6
【原版下载】网上找一下
【保护方式】注册码
〖精装友情通讯录〗软件是国产最为简洁、实用的通讯录软件,虽然精致但是功能特别强大,软件可能将令你爱不释手。软件界面精美、小巧实用、绿色精致。通讯录可选择简洁列表、名片格式及详细列表格式等三种格式显示,支持鼠标拖放操作,支持模糊查询,支持添加、排序等等,添加修改方便。软件随时升级。
Delphi6.0 无壳
00515264/.55 PUSH EBP
00515265|.8BEC MOV EBP,ESP
00515267|.B9 17000000 MOV ECX,17
0051526C|>6A 00 /PUSH 0
0051526E|.6A 00 |PUSH 0
00515270|.49 |DEC ECX
00515271|.^ 75 F9 \JNZ SHORT jzyq.0051526C
00515273|.53 PUSH EBX
00515274|.56 PUSH ESI
00515275|.8BD8 MOV EBX,EAX
00515277|.33C0 XOR EAX,EAX
00515279|.55 PUSH EBP
0051527A|.68 E9545100 PUSH jzyq.005154E9
0051527F|.64:FF30 PUSH DWORD PTR FS:
00515282|.64:8920 MOV DWORD PTR FS:,ESP
00515285|.68 80000000 PUSH 80 ; /BufSize = 80 (128.)
0051528A|.8D85 7BFFFFFF LEA EAX,DWORD PTR SS: ; |
00515290|.50 PUSH EAX ; |Buffer
00515291|.E8 B220EFFF CALL <JMP.&kernel32.GetSystemDirect>; \GetSystemDirectoryA
00515296|.8D45 FC LEA EAX,DWORD PTR SS:
00515299|.8D95 7BFFFFFF LEA EDX,DWORD PTR SS:
0051529F|.B9 81000000 MOV ECX,81
005152A4|.E8 DBF9EEFF CALL jzyq.00404C84
005152A9|.8D95 74FFFFFF LEA EDX,DWORD PTR SS:
005152AF|.8B83 1C030000 MOV EAX,DWORD PTR DS:
005152B5|.E8 F2D8F2FF CALL jzyq.00442BAC ;取注册码
005152BA|.83BD 74FFFFFF>CMP DWORD PTR SS:,0
005152C1|.74 1A JE SHORT jzyq.005152DD
005152C3|.8D95 70FFFFFF LEA EDX,DWORD PTR SS:
005152C9|.8B83 10030000 MOV EAX,DWORD PTR DS:
005152CF|.E8 D8D8F2FF CALL jzyq.00442BAC ;取订单号
005152D4|.83BD 70FFFFFF>CMP DWORD PTR SS:,0
005152DB|.75 0F JNZ SHORT jzyq.005152EC
005152DD|>B8 00555100 MOV EAX,jzyq.00515500 ;注册信息没有填写齐全
005152E2|.E8 B96AF2FF CALL jzyq.0043BDA0
005152E7|.E9 80010000 JMP jzyq.0051546C
005152EC|>8D95 6CFFFFFF LEA EDX,DWORD PTR SS:
005152F2|.8B83 1C030000 MOV EAX,DWORD PTR DS:
005152F8|.E8 AFD8F2FF CALL jzyq.00442BAC ;取注册码位数
005152FD|.8B85 6CFFFFFF MOV EAX,DWORD PTR SS:
00515303|.50 PUSH EAX
00515304|.8D95 60FFFFFF LEA EDX,DWORD PTR SS:
0051530A|.8B83 10030000 MOV EAX,DWORD PTR DS:
00515310|.E8 97D8F2FF CALL jzyq.00442BAC ;取订单号位数
00515315|.8B85 60FFFFFF MOV EAX,DWORD PTR SS:
0051531B|.E8 9042EFFF CALL jzyq.004095B0 ;判断字符是不是0-9,是就通过计算把结果给EAX
**********************************************************************************************
CALL jzyq.004095B0 跟进去!!!!!!!!!!!!!!!!
004095B0/$53 PUSH EBX
004095B1|.56 PUSH ESI
004095B2|.83C4 F4 ADD ESP,-0C
004095B5|.8BD8 MOV EBX,EAX
004095B7|.8BD4 MOV EDX,ESP
004095B9|.8BC3 MOV EAX,EBX
004095BB|.E8 B89DFFFF CALL jzyq.00403378 这个CALL有问题跟进
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~可以找这个关键算法
004033CA|>80EB 30 /SUB BL,30 ;BL是订单号的字符
004033CD|. |80FB 09 |CMP BL,9
004033D0|. |77 25 |JA SHORT jzyq.004033F7
004033D2|. |39F8 |CMP EAX,EDI
004033D4|. |77 21 |JA SHORT jzyq.004033F7
004033D6|. |8D0480 |LEA EAX,DWORD PTR DS: ;把计算结果*4+把计算结果
004033D9|. |01C0 |ADD EAX,EAX ;把计算结果+把计算结果
004033DB|. |01D8 |ADD EAX,EBX ;把计算结果+取出的字符
004033DD|. |8A1E |MOV BL,BYTE PTR DS: ;循环取出字符给BL
004033DF|. |46 |INC ESI ;ESI自 加1
004033E0|. |84DB |TEST BL,BL
004033E2|.^\75 E6 \JNZ SHORT jzyq.004033CA
*************************************************************************************************
00515320|.B9 40080000 MOV ECX,840 ;ECX置840
00515325|.99 CDQ ;EDX清0
00515326|.F7F9 IDIV ECX ;把CALL 004095B0 EAX的结果除以ECX
00515328|.8BC2 MOV EAX,EDX ;把佘数给EAX
0051532A|.8D95 64FFFFFF LEA EDX,DWORD PTR SS:
00515330|.E8 1742EFFF CALL jzyq.0040954C ;把上次计算EAX的结果放这个CDLL运算可以得到注册码的前N位
***************************************************************************************************
CALL jzyq.0040954C 算法CALL跟进
CALL 0040A24C算法CALL跟进,CALL 00409DA4算法CALL跟进,CALL 00409ECE算法CALL跟进,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~可以看到算法了
0040A022|$B9 0A000000 MOV ECX,0A ;ECX 置0A ; Case 55 ('U') of switch 00409FF6
0040A027|>8D75 9F LEA ESI,DWORD PTR SS:
0040A02A|>31D2 /XOR EDX,EDX ;EDX清0
0040A02C|.F7F1 |DIV ECX ;EAX是上次运算的结果/0A
0040A02E|.80C2 30 |ADD DL,30 ;DL+30
0040A031|.80FA 3A |CMP DL,3A ;DL与3A比较
0040A034|.72 03 |JB SHORT jzyq.0040A039 ;不高于等于时转移
0040A036|.80C2 07 |ADD DL,7
0040A039|>4E |DEC ESI ;ESI自减1
0040A03A|.8816 |MOV BYTE PTR DS:,DL ;把结果存入DS:
0040A03C|.09C0 |OR EAX,EAX
0040A03E|.^ 75 EA \JNZ SHORT jzyq.0040A02A
************************************************************************************************
00515335|.FFB5 64FFFFFF PUSH DWORD PTR SS: ;把注册码前N位压入堆栈
0051533B|.8D95 54FFFFFF LEA EDX,DWORD PTR SS:
00515341|.8B83 10030000 MOV EAX,DWORD PTR DS:
00515347|.E8 60D8F2FF CALL jzyq.00442BAC ;在次判断字符是不是0-9,是就通过计算把结果给EAX
0051534C|.8B85 54FFFFFF MOV EAX,DWORD PTR SS:
00515352|.E8 5942EFFF CALL jzyq.004095B0 ;把订单号字符运算
00515357|.8D95 58FFFFFF LEA EDX,DWORD PTR SS:
0051535D E8 C6FCFFFF CALL jzyq.00515028 ;把上次计算EAX的结果放这个CDLL运算可以得到一串字符
***************************************************************************************
CALL jzyq.00515028 跟进
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00515028/$55 PUSH EBP
00515029|.8BEC MOV EBP,ESP
0051502B|.33C9 XOR ECX,ECX
0051502D|.51 PUSH ECX
0051502E|.51 PUSH ECX
0051502F|.51 PUSH ECX
00515030|.51 PUSH ECX
00515031|.53 PUSH EBX
00515032|.56 PUSH ESI
00515033|.8BF2 MOV ESI,EDX
00515035|.8BD8 MOV EBX,EAX ;上次计算EAX的结果给我EBX
00515037|.33C0 XOR EAX,EAX
00515039|.55 PUSH EBP
0051503A|.68 F8505100 PUSH jzyq.005150F8
0051503F|.64:FF30 PUSH DWORD PTR FS:
00515042|.64:8920 MOV DWORD PTR FS:,ESP
00515045|.81F3 F1250B00 XOR EBX,0B25F1 EBX与0B25F1逻辑异或运算
0051504B|.8BC3 MOV EAX,EBX ; 在把结果存到EAX中
0051504D|.33D2 XOR EDX,EDX
0051504F|.52 PUSH EDX
00515050|.50 PUSH EAX 在把EAX压入堆栈这个数据有用
00515051|.8D45 FC LEA EAX,DWORD PTR SS:
00515054|.E8 2345EFFF CALL jzyq.0040957C ;跟进
在跟进CALL 0040A24C在跟进CALL 00409DA4在跟进CALL 00409DA4在跟进CALL 00409ECE最后跟进可以找到这个算法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00409F91|$B9 0A000000 MOV ECX,0A ;ECX置0A ; Case 55 ('U') of switch 00409F5D
00409F96|>8D75 AF LEA ESI,DWORD PTR SS:
00409F99|>53 /PUSH EBX
00409F9A|.51 |PUSH ECX
00409F9B|.6A 00 |PUSH 0
00409F9D|.51 |PUSH ECX
00409F9E|.8B03 |MOV EAX,DWORD PTR DS: ;EBX与0B25F1逻辑异或运算给EAX
00409FA0|.8B53 04 |MOV EDX,DWORD PTR DS: ;EAX=3042
00409FA3|.8B5D FC |MOV EBX,DWORD PTR SS:
00409FA6|.E8 15BDFFFF |CALL jzyq.00405CC0 ;CALL的内是DIV EBX XCHG EAX,EDX XOR EDX,EDX
00409FAB|.59 |POP ECX
00409FAC|.5B |POP EBX
00409FAD|.92 |XCHG EAX,EDX
00409FAE|.80C2 30 |ADD DL,30
00409FB1|.80FA 3A |CMP DL,3A
00409FB4|.72 03 |JB SHORT jzyq.00409FB9
00409FB6|.80C2 07 |ADD DL,7
00409FB9|>4E |DEC ESI
00409FBA|.8816 |MOV BYTE PTR DS:,DL
00409FBC|.53 |PUSH EBX
00409FBD|.51 |PUSH ECX
00409FBE|.6A 00 |PUSH 0
00409FC0|.51 |PUSH ECX
00409FC1|.8B03 |MOV EAX,DWORD PTR DS:
00409FC3|.8B53 04 |MOV EDX,DWORD PTR DS:
00409FC6|.8B5D FC |MOV EBX,DWORD PTR SS:
00409FC9|.E8 2ABCFFFF |CALL jzyq.00405BF8 ;CALL内是DIV EBX XOR EDX,EDX
00409FCE|.59 |POP ECX
00409FCF|.5B |POP EBX
00409FD0|.8903 |MOV DWORD PTR DS:,EAX
00409FD2|.8953 04 |MOV DWORD PTR DS:,EDX
00409FD5|.09D0 |OR EAX,EDX
00409FD7|.^ 75 C0 \JNZ SHORT jzyq.00409F99
*********************************************************************************8
00515362|.8B85 58FFFFFF MOV EAX,DWORD PTR SS:
00515368|.E8 4342EFFF CALL jzyq.004095B0 ;把CALL 00515028运算得到的字符串放到这个CALL
0051536D|.8D95 5CFFFFFF LEA EDX,DWORD PTR SS: ;把CALL 00515028 运算结果存到EAX中
00515373 E8 90FDFFFF CALL jzyq.00515108 ;把EAX的数经CALL运算可以得到注册码的中间N位 跟进
***********************************************************************************
CALL jzyq.00515108跟进
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00515108/$55 PUSH EBP
00515109|.8BEC MOV EBP,ESP
0051510B|.33C9 XOR ECX,ECX
0051510D|.51 PUSH ECX
0051510E|.51 PUSH ECX
0051510F|.51 PUSH ECX
00515110|.51 PUSH ECX
00515111|.51 PUSH ECX
00515112|.51 PUSH ECX
00515113|.53 PUSH EBX
00515114|.56 PUSH ESI
00515115|.8BF2 MOV ESI,EDX
00515117|.8BD8 MOV EBX,EAX 上次计算EAX的结果给EBX
00515119|.33C0 XOR EAX,EAX
0051511B|.55 PUSH EBP
0051511C|.68 54525100 PUSH jzyq.00515254
00515121|.64:FF30 PUSH DWORD PTR FS:
00515124|.64:8920 MOV DWORD PTR FS:,ESP
00515127|.81F3 8776FBDD XOR EBX,DDFB7687 EBX与DDFB7687逻辑异或运
0051512D|.8BC3 MOV EAX,EBX EBX与DDFB7687逻辑异或运的结果给EAX
0051512F|.33D2 XOR EDX,EDX
00515131|.52 PUSH EDX
00515132 50 PUSH EAX 在把EAX压入堆栈这个数据有用
00515133 8D45 FC LEA EAX,DWORD PTR SS:
00515136 E8 4144EFFF CALL jzyq.0040957C 在上面我们已经他析了这个CALL我就不跟进去了
0051513B 8B45 FC MOV EAX,DWORD PTR SS:
0051513E 0FB600 MOVZX EAX,BYTE PTR DS: 取字符串的第1位给EAX
00515141 8B55 FC MOV EDX,DWORD PTR SS: 把 CALL jzyq.0040957C算出的字串给EDX
00515144 0FB652 01 MOVZX EDX,BYTE PTR DS: 取字符串的第2位给EDX
00515148|.03C2 ADD EAX,EDX 字符串的第1位与字符串的第2位逻辑与运算给EAX
0051514A|.B9 05000000 MOV ECX,5 ECX置5
0051514F|.99 CDQ EDX清0
00515150|.F7F9 IDIV ECX EAX/ECX 带符号数除法 佘数存入EDX 00515152|.80C2 66 ADD DL,66 DL 加 66
00515155|.8855 F8 MOV BYTE PTR SS:,DL 把结果存到DS:
00515158|.8B45 FC MOV EAX,DWORD PTR SS:
0051515B|.0FB640 02 MOVZX EAX,BYTE PTR DS:
0051515F|.8B55 FC MOV EDX,DWORD PTR SS:
00515162|.0FB652 03 MOVZX EDX,BYTE PTR DS:
00515166|.03C2 ADD EAX,EDX
00515168|.B9 05000000 MOV ECX,5
0051516D|.99 CDQ
0051516E|.F7F9 IDIV ECX
00515170|.80C2 75 ADD DL,75
00515173|.8855 F9 MOV BYTE PTR SS:,DL 把结果存到DS:
00515176|.8B45 FC MOV EAX,DWORD PTR SS:
00515179|.0FB640 04 MOVZX EAX,BYTE PTR DS:
0051517D|.8B55 FC MOV EDX,DWORD PTR SS:
00515180|.0FB652 05 MOVZX EDX,BYTE PTR DS:
00515184|.03C2 ADD EAX,EDX
00515186|.B9 05000000 MOV ECX,5
0051518B|.99 CDQ
0051518C|.F7F9 IDIV ECX
0051518E|.80C2 7A ADD DL,7A
00515191|.8855 FA MOV BYTE PTR SS:,DL 把结果存到DS:
00515194|.8B45 FC MOV EAX,DWORD PTR SS:
00515197|.0FB640 06 MOVZX EAX,BYTE PTR DS:
0051519B|.8B55 FC MOV EDX,DWORD PTR SS:
0051519E|.0FB652 07 MOVZX EDX,BYTE PTR DS:
005151A2|.03C2 ADD EAX,EDX
005151A4|.8B55 FC MOV EDX,DWORD PTR SS:
005151A7|.0FB652 08 MOVZX EDX,BYTE PTR DS:
005151AB|.03C2 ADD EAX,EDX
005151AD|.B9 05000000 MOV ECX,5
005151B2|.99 CDQ
005151B3|.F7F9 IDIV ECX
005151B5|.80C2 69 ADD DL,69
005151B8|.8855 FB MOV BYTE PTR SS:,DL 把结果存到DS:
005151BB|.8D45 F4 LEA EAX,DWORD PTR SS:
005151BE|.8A55 F8 MOV DL,BYTE PTR SS:
005151C1|.E8 36FAEEFF CALL jzyq.00404BFC
005151C6|.8B45 F4 MOV EAX,DWORD PTR SS: ;
005151C9|.8D55 FC LEA EDX,DWORD PTR SS: 把 CALL jzyq.0040957C算出的字串给EAX
005151CC|.B9 07000000 MOV ECX,7
005151D1|.E8 DEFDEEFF CALL jzyq.00404FB4 把SS:中字符插入CALL 0040957C算出的字串的第7位
005151D6|.8D45 F0 LEA EAX,DWORD PTR SS:
005151D9|.8A55 FB MOV DL,BYTE PTR SS:
005151DC|.E8 1BFAEEFF CALL jzyq.00404BFC
005151E1|.8B45 F0 MOV EAX,DWORD PTR SS:
005151E4|.8D55 FC LEA EDX,DWORD PTR SS:
005151E7|.B9 03000000 MOV ECX,3
005151EC|.E8 C3FDEEFF CALL jzyq.00404FB4 把SS:中字符插入CALL 0040957C算出的字串的第3位
005151F1|.8D45 EC LEA EAX,DWORD PTR SS:
005151F4|.8A55 F9 MOV DL,BYTE PTR SS:
005151F7|.E8 00FAEEFF CALL jzyq.00404BFC
005151FC|.8B45 EC MOV EAX,DWORD PTR SS:
005151FF|.8D55 FC LEA EDX,DWORD PTR SS:
00515202|.B9 05000000 MOV ECX,5
00515207|.E8 A8FDEEFF CALL jzyq.00404FB4 把SS:中字符插入CALL 0040957C算出的字串的第5位
0051520C|.8D45 E8 LEA EAX,DWORD PTR SS:
0051520F|.8A55 FA MOV DL,BYTE PTR SS:
00515212|.E8 E5F9EEFF CALL jzyq.00404BFC
00515217|.8B45 E8 MOV EAX,DWORD PTR SS:
0051521A|.8D55 FC LEA EDX,DWORD PTR SS:
0051521D|.B9 09000000 MOV ECX,9
00515222|.E8 8DFDEEFF CALL jzyq.00404FB4 把SS:中字符插入CALL 0040957C算出的字串的第9位
00515227|.8BC6 MOV EAX,ESI
00515229|.8B55 FC MOV EDX,DWORD PTR SS:
0051522C|.E8 3FF8EEFF CALL jzyq.00404A70
00515231|.33C0 XOR EAX,EAX
00515233|.5A POP EDX
00515234|.59 POP ECX
00515235|.59 POP ECX
00515236|.64:8910 MOV DWORD PTR FS:,EDX
00515239|.68 5B525100 PUSH jzyq.0051525B
0051523E|>8D45 E8 LEA EAX,DWORD PTR SS:
00515241|.BA 04000000 MOV EDX,4
00515246|.E8 F5F7EEFF CALL jzyq.00404A40
0051524B|.8D45 FC LEA EAX,DWORD PTR SS:
0051524E|.E8 C9F7EEFF CALL jzyq.00404A1C
00515253\.C3 RETN
00515254 .^ E9 67F0EEFF JMP jzyq.004042C0
00515259 .^ EB E3 JMP SHORT jzyq.0051523E
0051525B .5E POP ESI
0051525C .5B POP EBX
0051525D .8BE5 MOV ESP,EBP
0051525F .5D POP EBP
00515260 .C3 RETN
**************************************************************************************
00515378|.FFB5 5CFFFFFF PUSH DWORD PTR SS: ;把CALL得到字串压入堆栈
0051537E|.68 20555100 PUSH jzyq.00515520 ;放入固定字符 1
00515383|.8D85 68FFFFFF LEA EAX,DWORD PTR SS:
00515389|.BA 03000000 MOV EDX,3
0051538E|.E8 01FAEEFF CALL jzyq.00404D94 ;把CALL 0040954C计算出的注册码+CALL 00515108计算出的注册码
00515393|.8B95 68FFFFFF MOV EDX,DWORD PTR SS: ;+1这就是真的注册码了
00515399|.58 POP EAX
0051539A|.E8 79FAEEFF CALL jzyq.00404E18
0051539F|.0F85 A3000000 JNZ jzyq.00515448
005153A5|.B8 2C555100 MOV EAX,jzyq.0051552C ;注册码正确,感谢你的注册!
005153AA|.E8 F169F2FF CALL jzyq.0043BDA0
005153AF|.A1 109C5300 MOV EAX,DWORD PTR DS:
005153B4|.8B00 MOV EAX,DWORD PTR DS:
005153B6|.8B80 C8040000 MOV EAX,DWORD PTR DS:
005153BC|.8B80 08020000 MOV EAX,DWORD PTR DS:
005153C2|.33D2 XOR EDX,EDX
005153C4|.E8 A79BF5FF CALL jzyq.0046EF70
005153C9|.BA 50555100 MOV EDX,jzyq.00515550 ;精装友情-软件已注册
005153CE|.E8 F99AF5FF CALL jzyq.0046EECC
005153D3|.8D85 50FFFFFF LEA EAX,DWORD PTR SS:[EBP-B0
*****************************************************
中间无用略去
***************************************************
00515448|>B8 B4555100 MOV EAX,jzyq.005155B4 ;注册失败,请重新注册!
0051544D|.E8 4E69F2FF CALL jzyq.0043BDA0
******************************************************************************** 感觉交待得不是很清楚哈 算法分析最后最好再分析结果总结一下。 不错 回头可以写一下这个注册机 应该不难 没总结一下哈?
页:
[1]