破解实例:Mail Scan V3.5.1.2
2007-01-13 20:16:09 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

核心提示:用bpx MessageBoxA设断点,输入注册码并按“确定”之后会中断,破解实例:Mail Scan V3.5.1.2,按几下F12并向上看,看见如下的判断:0167:00488A42MOVECX,[EBP-08]0167:00488A45MOVEDX,[EBP-04]0167:00488A4
用bpx MessageBoxA设断点,输入注册码并按“确定”之后会中断,
按几下F12并向上看,看见如下的判断:
0167:00488A42 MOV ECX,[EBP-08]
0167:00488A45 MOV EDX,[EBP-04]
0167:00488A48 MOV EAX,[EBX+0000034C]
0167:00488A4E CALL 00483730 //检查注册码
0167:00488A53 TEST AL,AL
0167:00488A55 JZ 00488AB6
0167:00488A57 PUSH 00
0167:00488A59 CALL USER32!MessageBeep
0167:00488A5E MOV EDX,00488B00
0167:00488A63 MOV EAX,EBX
0167:00488A65 CALL 0042CD98
0167:00488A6A XOR EDX,EDX
0167:00488A6C MOV EAX,[EBX+00000310]
0167:00488A72 MOV ECX,[EAX]
0167:00488A74 CALL [ECX+5C]
0167:00488A77 MOV EAX,[EBX+0000034C]
0167:00488A7D CALL 0048339C
0167:00488A82 MOV DL,01
0167:00488A84 MOV EAX,[EBX+000002FC]
0167:00488A8A MOV ECX,[EAX]
0167:00488A8C CALL [ECX+5C]
0167:00488A8F MOV DL,01
0167:00488A91 MOV EAX,[EBX+00000300]
0167:00488A97 MOV ECX,[EAX]
0167:00488A99 CALL [ECX+5C]
0167:00488A9C PUSH 40
0167:00488A9E MOV ECX,00488B14
0167:00488AA3 MOV EDX,00488B20
0167:00488AA8 MOV EAX,[0048C088]
0167:00488AAD MOV EAX,[EAX]
0167:00488AAF CALL 0044AC98 //注册码正确
0167:00488AB4 JMP 00488ACE
0167:00488AB6 PUSH 40
0167:00488AB8 MOV ECX,00488B68
0167:00488ABD MOV EDX,00488B70
0167:00488AC2 MOV EAX,[0048C088]
0167:00488AC7 MOV EAX,[EAX]
0167:00488AC9 CALL 0044AC98 //注册码错误
跟进call 00483730,看见:
0167:00483764 LEA ECX,[EBP-0C]
0167:00483767 MOV EDX,[EBP-04]
0167:0048376A MOV EAX,ESI
0167:0048376C CALL 00483820 //计算注册码
0167:00483771 MOV EAX,[EBP-0C] //假注册码
0167:00483774 MOV EDX,[EBP-08] //真注册码
0167:00483777 CALL 00403FD8 //比较注册码
0167:0048377C JNZ 004837D9
由于这个软件的注册码显然是用Win98的ProductID算出来的,故需要写
注册机。跟进call 00483820,把计算注册码的算法搞清楚。很简单,如下:
0167:00483864 MOV EAX,00000001
0167:00483869 MOV EDX,[EBP-08]
0167:0048386C MOV DL,[EAX+EDX-01] //从ProcductID中取一字符
0167:00483870 XOR EBX,EBX
0167:00483872 MOV BL,DL
0167:00483874 CMP EAX,04
0167:00483877 JNZ 00483881
0167:00483879 MOV ESI,EDX
0167:0048387B AND ESI,000000FF
0167:00483881 MOV EDX,EBX
0167:00483883 ADD EDX,EDX
0167:00483885 LEA EDX,[EDX*4+EDX]
0167:00483888 IMUL EDX,EAX
0167:0048388B IMUL EDX,ESI
0167:0048388E ADD [EBP-10],EDX
0167:00483891 INC EAX
0167:00483892 DEC ECX
0167:00483893 JNZ 00483869 //循环
0167:00483895 MOV EAX,[EBP-04]
0167:00483898 MOV ECX,[EAX+40]
0167:0048389B MOV EAX,[ECX+08]
0167:0048389E IMUL EBX
0167:004838A0 MOV EDX,[ECX+0C]
0167:004838A3 IMUL EDX,[EBP-10]
0167:004838A7 ADD EAX,EDX
0167:004838A9 MOV EDX,[ECX+04]
0167:004838AC IMUL EDX,ESI
0167:004838AF ADD EAX,EDX
0167:004838B1 CDQ
0167:004838B2 MOV [EBP-18],EAX //注册码
0167:004838B5 MOV [EBP-14],EDX
0167:004838B8 PUSH DWORD PTR [EBP-14]
0167:004838BB PUSH DWORD PTR [EBP-18]
0167:004838BE MOV EAX,[EBP-0C]
0167:004838C1 CALL 00409360 //将注册码由数值形式转为字符串
更多精彩
赞助商链接