【文章标题】: 一个易语言程序的算法分析
【文章作者】: 河边渔者
【作者邮箱】: jwchlj.8256@163.com
【软件名称】: 微平精彩按钮设计2.0版
【软件大小】: 791k
【下载地址】: 网上有的是,包括已破解的
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]
【保护方式】: 硬件代码、注册码
【编写语言】: 易语言
【使用工具】: OD、W32asm、计算器
【操作平台】: Windows XP
【软件介绍】: 利用它能设计出精美的图形按钮图片
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
再次声明:
1. 该软件为免费注册,作者要求注册是为了调查了解软件使用情况,因此,嘿嘿……网上破解版有的是,不是我干的;
2. 该软件在我机子上早就有,用来做些素材,刚开始拿它没法,后来学了些破解小技术就爆破了,总感觉找不出注册码来是一缺憾,于是有此一文;
3. 没有搜索过论坛上是否有该软件的分析文章(起码我没看到),如有雷同,纯属巧合,不要说我那个啊!
4. 有什么不当之处,还望各位看官一定批评指正,不胜感激!
过程:
1. 查壳:用Peid查为UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay],弱!人家说了是免费注册,可能不太重视保护,便宜咱一头疙瘩!
2. 脱壳:用UPXShell完美脱干净后大约有1.01M,再Peid查为Microsoft Visual C++ 6.0 [Overlay],后来才知道上当了!伪装的!据说易语言的软件经常伪装成
Visual C++,这一点也与易语言的特点和Peid的查壳方式有关,怪不得谁!
3. OD载入,满是异常,要shift+f7/f8/f9才能通过,干脆到菜单->选项->调试设置->异常中,全勾上,没事了!程序停在00403831处。
先搜索字符串,没找到可用信息,可明明随便输入时有出错提示,好办,第一:命令行输入bp MessageBoxExA下断;第二,OllyICE自带插件下断,两种都行。
我用bp MessageBoxExA下断,f9运行输入注册名hebian,注册码2323,此时可看到硬件代码为2709578161,点“确定”,成功断在77D5057D处,是user32系统领空,
看堆栈中已经有了出错提示,alt+f9,出现注册错误信息,点“确定”,到达1005a7d6处,再alt+f9共27次(挺熟的,为什么又是27次?)回到程序领空00445a83处,
再搜索字符串,好啊,全出来了,找到这句“注册失败,请检查用户名与注册码是否正确。”双击到达00445a6f,冤枉,就在刚才的00445a83上面!
往上翻翻,这一部分的开头是00445a50,可看不到它是从哪儿蹦来的,好办,祭出法宝W32asm立即就看到它是从0044571d处je来,看来OD和W32asm各有专长嘛,要让它们
物尽其用,当然也许是我OD用的不熟。回到OD,找到这行,再往上翻,在004452e2处重新下断,删掉刚才的断点。重新开始,成功断在004452e2处。
下面长篇大论开始喽!
004452E2 55 PUSH EBP ;断点在这儿
004452E3 8BEC MOV EBP,ESP
004452E5 81EC A0000000 SUB ESP,0A0
004452EB 68 00000000 PUSH 0
004452F0 BB 40060000 MOV EBX,640
004452F5 E8 80940000 CALL 微平精彩.0044E77A
004452FA 83C4 04 ADD ESP,4
004452FD 6A FF PUSH -1
004452FF 6A 08 PUSH 8
00445301 68 9B030116 PUSH 1601039B
00445306 68 93030152 PUSH 52010393
0044530B E8 76940000 CALL 微平精彩.0044E786 ; 呼出假码
00445310 83C4 10 ADD ESP,10 ; 下面挺长一段是一些准备工作
00445313 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00445316 68 04000080 PUSH 80000004
0044531B 6A 00 PUSH 0
0044531D 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00445320 85C0 TEST EAX,EAX
00445322 75 05 JNZ SHORT 微平精彩.00445329
00445324 B8 44924000 MOV EAX,微平精彩.00409244
00445329 50 PUSH EAX
0044532A 68 01000000 PUSH 1
0044532F BB 64010000 MOV EBX,164
00445334 E8 41940000 CALL 微平精彩.0044E77A
00445339 83C4 10 ADD ESP,10
0044533C 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
0044533F 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
00445342 8B5D FC MOV EBX,DWORD PTR SS:[EBP-4]
00445345 85DB TEST EBX,EBX
00445347 74 09 JE SHORT 微平精彩.00445352
00445349 53 PUSH EBX
0044534A E8 31940000 CALL 微平精彩.0044E780
0044534F 83C4 04 ADD ESP,4
00445352 68 01030080 PUSH 80000301
00445357 6A 00 PUSH 0
00445359 68 06000000 PUSH 6
0044535E 68 01000000 PUSH 1
00445363 BB 20060000 MOV EBX,620
00445368 E8 0D940000 CALL 微平精彩.0044E77A
0044536D 83C4 10 ADD ESP,10
00445370 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
00445373 8955 EC MOV DWORD PTR SS:[EBP-14],EDX
00445376 894D F0 MOV DWORD PTR SS:[EBP-10],ECX
00445379 68 01030080 PUSH 80000301
0044537E 6A 00 PUSH 0
00445380 68 0A000000 PUSH 0A
00445385 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
00445388 81F9 05000080 CMP ECX,80000005
0044538E 74 0D JE SHORT 微平精彩.0044539D
00445390 68 05000000 PUSH 5
00445395 E8 F2930000 CALL 微平精彩.0044E78C
0044539A 83C4 04 ADD ESP,4
0044539D 68 05000080 PUSH 80000005
004453A2 6A 00 PUSH 0
004453A4 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004453A7 85C0 TEST EAX,EAX
004453A9 75 05 JNZ SHORT 微平精彩.004453B0
004453AB B8 85924000 MOV EAX,微平精彩.00409285
004453B0 50 PUSH EAX
004453B1 68 02000000 PUSH 2
004453B6 BB 9C010000 MOV EBX,19C
004453BB E8 BA930000 CALL 微平精彩.0044E77A ; 出现数值2709541563,不是硬件代码,但显然与硬件有关
004453C0 83C4 1C ADD ESP,1C ; 难道是它算出的机器码?下面它要参与运算
004453C3 8945 DC MOV DWORD PTR SS:[EBP-24],EAX ; 下面又是一些简单设置,没意思
004453C6 8955 E0 MOV DWORD PTR SS:[EBP-20],EDX
004453C9 894D E4 MOV DWORD PTR SS:[EBP-1C],ECX
004453CC 8B5D E8 MOV EBX,DWORD PTR SS:[EBP-18]
004453CF 85DB TEST EBX,EBX
004453D1 74 09 JE SHORT 微平精彩.004453DC
004453D3 53 PUSH EBX
004453D4 E8 A7930000 CALL 微平精彩.0044E780
004453D9 83C4 04 ADD ESP,4
004453DC 8B4D E4 MOV ECX,DWORD PTR SS:[EBP-1C]
004453DF 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20]
004453E2 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
004453E5 81F9 04000080 CMP ECX,80000004
004453EB 75 0B JNZ SHORT 微平精彩.004453F8
004453ED 85C0 TEST EAX,EAX
004453EF 75 18 JNZ SHORT 微平精彩.00445409
004453F1 B8 44924000 MOV EAX,微平精彩.00409244
004453F6 EB 11 JMP SHORT 微平精彩.00445409
004453F8 81F9 05000080 CMP ECX,80000005
004453FE 75 09 JNZ SHORT 微平精彩.00445409
00445400 85C0 TEST EAX,EAX
00445402 75 05 JNZ SHORT 微平精彩.00445409
00445404 B8 85924000 MOV EAX,微平精彩.00409285
00445409 51 PUSH ECX
0044540A 52 PUSH EDX
0044540B 50 PUSH EAX
0044540C 68 01000000 PUSH 1
00445411 BB 64010000 MOV EBX,164
00445416 E8 5F930000 CALL 微平精彩.0044E77A
0044541B 83C4 10 ADD ESP,10
0044541E 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
00445421 8955 D8 MOV DWORD PTR SS:[EBP-28],EDX
00445424 8B4D E4 MOV ECX,DWORD PTR SS:[EBP-1C]
00445427 81F9 04000080 CMP ECX,80000004
0044542D 74 0C JE SHORT 微平精彩.0044543B
0044542F 81F9 05000080 CMP ECX,80000005
00445435 0F85 10000000 JNZ 微平精彩.0044544B
0044543B 8B5D DC MOV EBX,DWORD PTR SS:[EBP-24]
0044543E 85DB TEST EBX,EBX
00445440 74 09 JE SHORT 微平精彩.0044544B
00445442 53 PUSH EBX
00445443 E8 38930000 CALL 微平精彩.0044E780 ; 下面开始一些数学运算,倒来倒去的
00445448 83C4 04 ADD ESP,4
0044544B DD45 F4 FLD QWORD PTR SS:[EBP-C] ; 把假码2323装入st0
0044544E DC45 D4 FADD QWORD PTR SS:[EBP-2C] ; 2709541563+2323=2709543886
00445451 DD5D CC FSTP QWORD PTR SS:[EBP-34] ; 2709543886送入st0
00445454 6A FF PUSH -1
00445456 6A 08 PUSH 8
00445458 68 9D030116 PUSH 1601039D
0044545D 68 93030152 PUSH 52010393
00445462 E8 1F930000 CALL 微平精彩.0044E786 ; 呼出注册名
00445467 83C4 10 ADD ESP,10
0044546A 8945 C8 MOV DWORD PTR SS:[EBP-38],EAX
0044546D 6A 00 PUSH 0
0044546F 6A 00 PUSH 0
00445471 6A 00 PUSH 0
00445473 68 04000080 PUSH 80000004
00445478 6A 00 PUSH 0
0044547A 8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38]
0044547D 85C0 TEST EAX,EAX
0044547F 75 05 JNZ SHORT 微平精彩.00445486
00445481 B8 44924000 MOV EAX,微平精彩.00409244
00445486 50 PUSH EAX
00445487 68 02000000 PUSH 2
0044548C BB 44010000 MOV EBX,144
00445491 E8 E4920000 CALL 微平精彩.0044E77A ; 取注册名的第一个字符h的16进制68
00445496 83C4 1C ADD ESP,1C
00445499 8945 C4 MOV DWORD PTR SS:[EBP-3C],EAX
0044549C 8B5D C8 MOV EBX,DWORD PTR SS:[EBP-38]
0044549F 85DB TEST EBX,EBX
004454A1 74 09 JE SHORT 微平精彩.004454AC
004454A3 53 PUSH EBX
004454A4 E8 D7920000 CALL 微平精彩.0044E780
004454A9 83C4 04 ADD ESP,4
004454AC DB45 C4 FILD DWORD PTR SS:[EBP-3C] ; 68h的十进制数值104装入st0
004454AF DD5D BC FSTP QWORD PTR SS:[EBP-44] ; 存入st7备用
004454B2 DD45 BC FLD QWORD PTR SS:[EBP-44]
004454B5 DC05 4E954000 FADD QWORD PTR DS:[40954E] ; 104+固定数值852=956
004454BB DD5D BC FSTP QWORD PTR SS:[EBP-44] ; 956装入st0
004454BE DD45 BC FLD QWORD PTR SS:[EBP-44]
004454C1 DC0D 56954000 FMUL QWORD PTR DS:[409556] ; 956*37=35372放入st0
004454C7 DD5D B4 FSTP QWORD PTR SS:[EBP-4C] ; 备用
004454CA 6A FF PUSH -1
004454CC 6A 08 PUSH 8
004454CE 68 9D030116 PUSH 1601039D
004454D3 68 93030152 PUSH 52010393
004454D8 E8 A9920000 CALL 微平精彩.0044E786
004454DD 83C4 10 ADD ESP,10
004454E0 8945 B0 MOV DWORD PTR SS:[EBP-50],EAX
004454E3 68 04000080 PUSH 80000004
004454E8 6A 00 PUSH 0
004454EA 8B45 B0 MOV EAX,DWORD PTR SS:[EBP-50]
004454ED 85C0 TEST EAX,EAX
004454EF 75 05 JNZ SHORT 微平精彩.004454F6
004454F1 B8 44924000 MOV EAX,微平精彩.00409244
004454F6 50 PUSH EAX
004454F7 68 01000000 PUSH 1
004454FC BB 30010000 MOV EBX,130
00445501 E8 74920000 CALL 微平精彩.0044E77A ; 取注册名位数6
00445506 83C4 10 ADD ESP,10
00445509 8945 AC MOV DWORD PTR SS:[EBP-54],EAX
0044550C 8B5D B0 MOV EBX,DWORD PTR SS:[EBP-50]
0044550F 85DB TEST EBX,EBX
00445511 74 09 JE SHORT 微平精彩.0044551C
00445513 53 PUSH EBX
00445514 E8 67920000 CALL 微平精彩.0044E780
00445519 83C4 04 ADD ESP,4
0044551C 6A FF PUSH -1
0044551E 6A 08 PUSH 8
00445520 68 9D030116 PUSH 1601039D
00445525 68 93030152 PUSH 52010393
0044552A E8 57920000 CALL 微平精彩.0044E786
0044552F 83C4 10 ADD ESP,10
00445532 8945 A8 MOV DWORD PTR SS:[EBP-58],EAX
00445535 68 01030080 PUSH 80000301
0044553A 6A 00 PUSH 0
0044553C FF75 AC PUSH DWORD PTR SS:[EBP-54]
0044553F 68 04000080 PUSH 80000004
00445544 6A 00 PUSH 0
00445546 8B45 A8 MOV EAX,DWORD PTR SS:[EBP-58]
00445549 85C0 TEST EAX,EAX
0044554B 75 05 JNZ SHORT 微平精彩.00445552
0044554D B8 44924000 MOV EAX,微平精彩.00409244
00445552 50 PUSH EAX
00445553 68 02000000 PUSH 2
00445558 BB 44010000 MOV EBX,144
0044555D E8 18920000 CALL 微平精彩.0044E77A ; 取注册名最后一个字符n的16进制数值6e
00445562 83C4 1C ADD ESP,1C
00445565 8945 A4 MOV DWORD PTR SS:[EBP-5C],EAX
00445568 8B5D A8 MOV EBX,DWORD PTR SS:[EBP-58]
0044556B 85DB TEST EBX,EBX
0044556D 74 09 JE SHORT 微平精彩.00445578
0044556F 53 PUSH EBX
00445570 E8 0B920000 CALL 微平精彩.0044E780
00445575 83C4 04 ADD ESP,4
00445578 DB45 A4 FILD DWORD PTR SS:[EBP-5C] ; 6e的十进制数值110放入st0
0044557B DD5D 9C FSTP QWORD PTR SS:[EBP-64]
0044557E DD45 9C FLD QWORD PTR SS:[EBP-64]
00445581 DC0D 5E954000 FMUL QWORD PTR DS:[40955E] ; 110*51=5610
00445587 DD5D 9C FSTP QWORD PTR SS:[EBP-64] ; 备用
0044558A 68 01030080 PUSH 80000301
0044558F 6A 00 PUSH 0
00445591 68 0D000000 PUSH 0D
00445596 68 01000000 PUSH 1
0044559B BB 20060000 MOV EBX,620
004455A0 E8 D5910000 CALL 微平精彩.0044E77A ; 取固定数值2680
004455A5 83C4 10 ADD ESP,10
004455A8 8945 90 MOV DWORD PTR SS:[EBP-70],EAX
004455AB 8955 94 MOV DWORD PTR SS:[EBP-6C],EDX
004455AE 894D 98 MOV DWORD PTR SS:[EBP-68],ECX
004455B1 6A FF PUSH -1
004455B3 6A 08 PUSH 8
004455B5 68 99030116 PUSH 16010399
004455BA 68 93030152 PUSH 52010393
004455BF E8 C2910000 CALL 微平精彩.0044E786 ; 呼出硬件代码2709578161,注意,与上面那个不同
004455C4 83C4 10 ADD ESP,10
004455C7 8945 8C MOV DWORD PTR SS:[EBP-74],EAX
004455CA 68 04000080 PUSH 80000004
004455CF 6A 00 PUSH 0
004455D1 8B45 8C MOV EAX,DWORD PTR SS:[EBP-74]
004455D4 85C0 TEST EAX,EAX
004455D6 75 05 JNZ SHORT 微平精彩.004455DD
004455D8 B8 44924000 MOV EAX,微平精彩.00409244
004455DD 50 PUSH EAX
004455DE 68 01000000 PUSH 1
004455E3 BB 64010000 MOV EBX,164
004455E8 E8 8D910000 CALL 微平精彩.0044E77A
004455ED 83C4 10 ADD ESP,10
004455F0 8945 84 MOV DWORD PTR SS:[EBP-7C],EAX
004455F3 8955 88 MOV DWORD PTR SS:[EBP-78],EDX
004455F6 8B5D 8C MOV EBX,DWORD PTR SS:[EBP-74]
004455F9 85DB TEST EBX,EBX
004455FB 74 09 JE SHORT 微平精彩.00445606
004455FD 53 PUSH EBX
004455FE E8 7D910000 CALL 微平精彩.0044E780
00445603 83C4 04 ADD ESP,4
00445606 DD45 84 FLD QWORD PTR SS:[EBP-7C] ; 硬件代码作为实数装入st0
00445609 DC0D 66954000 FMUL QWORD PTR DS:[409566] ; 2709578161*31=83996922991
0044560F DD9D 7CFFFFFF FSTP QWORD PTR SS:[EBP-84]
00445615 DD45 B4 FLD QWORD PTR SS:[EBP-4C]
00445618 DC45 9C FADD QWORD PTR SS:[EBP-64] ; 35372+5610=40982
0044561B 8B4D 98 MOV ECX,DWORD PTR SS:[EBP-68]
0044561E 8B55 94 MOV EDX,DWORD PTR SS:[EBP-6C]
00445621 8B45 90 MOV EAX,DWORD PTR SS:[EBP-70]
00445624 81F9 01010080 CMP ECX,80000101
0044562A 75 07 JNZ SHORT 微平精彩.00445633
0044562C 25 FF000000 AND EAX,0FF
00445631 EB 2F JMP SHORT 微平精彩.00445662
00445633 81F9 01020080 CMP ECX,80000201
00445639 75 03 JNZ SHORT 微平精彩.0044563E
0044563B 98 CWDE
0044563C EB 24 JMP SHORT 微平精彩.00445662
0044563E 8985 74FFFFFF MOV DWORD PTR SS:[EBP-8C],EAX
00445644 81F9 01030080 CMP ECX,80000301
0044564A 74 1C JE SHORT 微平精彩.00445668
0044564C 81F9 01040080 CMP ECX,80000401
00445652 75 1C JNZ SHORT 微平精彩.00445670
00445654 8995 78FFFFFF MOV DWORD PTR SS:[EBP-88],EDX
0044565A DFAD 74FFFFFF FILD QWORD PTR SS:[EBP-8C]
00445660 EB 33 JMP SHORT 微平精彩.00445695
00445662 8985 74FFFFFF MOV DWORD PTR SS:[EBP-8C],EAX
00445668 DB85 74FFFFFF FILD DWORD PTR SS:[EBP-8C] ; 2680h的十进制数值9856装入st0
0044566E EB 25 JMP SHORT 微平精彩.00445695
00445670 81F9 01050080 CMP ECX,80000501
00445676 75 08 JNZ SHORT 微平精彩.00445680
00445678 D985 74FFFFFF FLD DWORD PTR SS:[EBP-8C]
0044567E EB 15 JMP SHORT 微平精彩.00445695
00445680 81F9 01060080 CMP ECX,80000601
00445686 74 1F JE SHORT 微平精彩.004456A7
00445688 68 02000000 PUSH 2
0044568D E8 FA900000 CALL 微平精彩.0044E78C
00445692 83C4 04 ADD ESP,4
00445695 DD9D 74FFFFFF FSTP QWORD PTR SS:[EBP-8C]
0044569B 8B85 74FFFFFF MOV EAX,DWORD PTR SS:[EBP-8C]
004456A1 8B95 78FFFFFF MOV EDX,DWORD PTR SS:[EBP-88]
004456A7 8985 74FFFFFF MOV DWORD PTR SS:[EBP-8C],EAX
004456AD 8995 78FFFFFF MOV DWORD PTR SS:[EBP-88],EDX
004456B3 DC85 74FFFFFF FADD QWORD PTR SS:[EBP-8C] ; 40982+9856=50838
004456B9 DC85 7CFFFFFF FADD QWORD PTR SS:[EBP-84] ; 50838+83996922991=83996973829
004456BF DD9D 6CFFFFFF FSTP QWORD PTR SS:[EBP-94] ; 备用
004456C5 8B4D 98 MOV ECX,DWORD PTR SS:[EBP-68]
004456C8 81F9 04000080 CMP ECX,80000004
004456CE 74 0C JE SHORT 微平精彩.004456DC
004456D0 81F9 05000080 CMP ECX,80000005
004456D6 0F85 10000000 JNZ 微平精彩.004456EC
004456DC 8B5D 90 MOV EBX,DWORD PTR SS:[EBP-70]
004456DF 85DB TEST EBX,EBX
004456E1 74 09 JE SHORT 微平精彩.004456EC
004456E3 53 PUSH EBX
004456E4 E8 97900000 CALL 微平精彩.0044E780
004456E9 83C4 04 ADD ESP,4
004456EC DD85 6CFFFFFF FLD QWORD PTR SS:[EBP-94] ; 83996973829装入st0处
004456F2 DC25 6E954000 FSUB QWORD PTR DS:[40956E] ; 83996973829-6566985=83990406844
004456F8 DD9D 64FFFFFF FSTP QWORD PTR SS:[EBP-9C]
004456FE DD45 CC FLD QWORD PTR SS:[EBP-34]
00445701 DCA5 64FFFFFF FSUB QWORD PTR SS:[EBP-9C] ; 2709543886-83990406844=-81280862958
00445707 D9E4 FTST
00445709 DFE0 FSTSW AX ; 保存fst的值3900到AX
0044570B F6C4 01 TEST AH,1 ; 测试ah=39与1是否相等
0044570E 74 02 JE SHORT 微平精彩.00445712 ; 相等则跳,这儿应该跳,因此这儿也是一爆破点
00445710 D9E0 FCHS ; 上面的负数变为正数
00445712 DC1D 76954000 FCOMP QWORD PTR DS:[409576] ; 比较81280862958与0,不等则fst赋0
00445718 DFE0 FSTSW AX ; 0保存到eax
0044571A F6C4 41 TEST AH,41 ; 比较ah与41是否相等,影响标志位
0044571D 0F84 2D030000 JE 微平精彩.00445A50 ; 跳向失败,爆破点之一
…………省略若干行,估计是与功能有关,没有追
0044593D 6A 00 PUSH 0
0044593F 68 7E954000 PUSH 微平精彩.0040957E ; 微平精彩按钮设计 v2.0版 (注册版)
00445944 6A FF PUSH -1
00445946 6A 08 PUSH 8
00445948 68 00000106 PUSH 6010000
0044594D 68 01000152 PUSH 52010001
00445952 E8 3B8E0000 CALL 微平精彩.0044E792
00445957 83C4 18 ADD ESP,18
0044595A 68 01030080 PUSH 80000301
0044595F 6A 00 PUSH 0
00445961 68 03000000 PUSH 3
00445966 68 01000000 PUSH 1
0044596B BB 20060000 MOV EBX,620
00445970 E8 058E0000 CALL 微平精彩.0044E77A
00445975 83C4 10 ADD ESP,10
00445978 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
0044597B 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
0044597E 894D FC MOV DWORD PTR SS:[EBP-4],ECX
00445981 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00445984 81F9 04000080 CMP ECX,80000004
0044598A 74 0D JE SHORT 微平精彩.00445999
0044598C 68 05000000 PUSH 5
00445991 E8 F68D0000 CALL 微平精彩.0044E78C
00445996 83C4 04 ADD ESP,4
00445999 6A 00 PUSH 0
0044599B FF75 F4 PUSH DWORD PTR SS:[EBP-C]
0044599E 6A FF PUSH -1
004459A0 6A 08 PUSH 8
004459A2 68 A0030116 PUSH 160103A0
004459A7 68 93030152 PUSH 52010393
004459AC E8 E18D0000 CALL 微平精彩.0044E792
004459B1 83C4 18 ADD ESP,18
004459B4 8B5D F4 MOV EBX,DWORD PTR SS:[EBP-C]
004459B7 85DB TEST EBX,EBX
004459B9 74 09 JE SHORT 微平精彩.004459C4
004459BB 53 PUSH EBX
004459BC E8 BF8D0000 CALL 微平精彩.0044E780
004459C1 83C4 04 ADD ESP,4
004459C4 6A 00 PUSH 0
004459C6 68 00000000 PUSH 0
004459CB 6A FF PUSH -1
004459CD 6A 05 PUSH 5
004459CF 68 97030116 PUSH 16010397
004459D4 68 93030152 PUSH 52010393
004459D9 E8 B48D0000 CALL 微平精彩.0044E792
004459DE 83C4 18 ADD ESP,18
004459E1 6A 00 PUSH 0
004459E3 6A 00 PUSH 0
004459E5 6A 00 PUSH 0
004459E7 68 01030080 PUSH 80000301
004459EC 6A 00 PUSH 0
004459EE 68 00000000 PUSH 0
004459F3 68 04000080 PUSH 80000004
004459F8 6A 00 PUSH 0
004459FA 68 4B964000 PUSH 微平精彩.0040964B ; 你已成功注册了该软件,非常感谢您的注册!
004459FF 68 03000000 PUSH 3
00445A04 BB 00030000 MOV EBX,300
00445A09 E8 6C8D0000 CALL 微平精彩.0044E77A
00445A0E 83C4 28 ADD ESP,28
00445A11 6A 00 PUSH 0
00445A13 68 46964000 PUSH 微平精彩.00409646 ; 确定
00445A18 6A FF PUSH -1
00445A1A 6A 0A PUSH 0A
00445A1C 68 96030116 PUSH 16010396
00445A21 68 93030152 PUSH 52010393
00445A26 E8 678D0000 CALL 微平精彩.0044E792
00445A2B 83C4 18 ADD ESP,18
00445A2E 6A 00 PUSH 0
00445A30 68 01000000 PUSH 1
00445A35 6A FF PUSH -1
00445A37 6A 05 PUSH 5
00445A39 68 A4030116 PUSH 160103A4
00445A3E 68 93030152 PUSH 52010393
00445A43 E8 4A8D0000 CALL 微平精彩.0044E792
00445A48 83C4 18 ADD ESP,18
00445A4B E9 36000000 JMP 微平精彩.00445A86
00445A50 68 04000080 PUSH 80000004
00445A55 6A 00 PUSH 0
00445A57 68 75964000 PUSH 微平精彩.00409675 ; 注册失败
00445A5C 68 01030080 PUSH 80000301
00445A61 6A 00 PUSH 0
00445A63 68 10000000 PUSH 10
00445A68 68 04000080 PUSH 80000004
00445A6D 6A 00 PUSH 0
00445A6F 68 7E964000 PUSH 微平精彩.0040967E ; 注册失败,请检查用户名与注册码是否正确。
00445A74 68 03000000 PUSH 3
00445A79 BB 00030000 MOV EBX,300
00445A7E E8 F78C0000 CALL 微平精彩.0044E77A
00445A83 83C4 28 ADD ESP,28 ; (初始 cpu 选择)
00445A86 8BE5 MOV ESP,EBP
00445A88 5D POP EBP
00445A89 C3 RETN
注册码计算方法:
1. 取第一次得到的像是硬件代码的2709541563与假码2323相加得到2709543886;
2. 取注册名hebian的第一位字符h的16进制数值68转成十进制104与固定数852相加得到956,再用956乘37得到35372,即(104+852)*37=35372;
3. 取注册名hebian的最后一位字符n的16进制数值6e转成十进制110与51相乘得到5610,即110*51=5610;
4. 把35372与5610相加得到40982,取固定数2680h的十进制数值9856与40982相加得到50838,即9856+(35372+5610)=50838;
5. 取硬件代码2709578161与31相乘得到83996922991,即2709578161*31=83996922991,把上面得到的50838与83996922991相加得到83996973829,
再用83996973829减去固定数6566985得到83990406844,即83996973829-6566985=83990406844;
6. 用第一步得到的2709543886减去83990406844,若结果为0则注册成功!
7. 了解了程序是如何处理我们输入的数据的,真码的计算也就简单了!
不妨设真码为X,则可得方程为
2709541563+X-83990406844=0
解得X=83990406844-2709541563=81280865281
那位看官说了,这么简单怎么还方程方程的?不瞒您说,最后算真码时,一不小心算错了两次。你说什么?让我到小学再深造深造,不要啊……我跑!
重新来一遍,输入注册名hebian,输入注册码81280865281,弹出倍亲切的成功窗口“你已成功注册了该软件,非常感谢您的注册!”耶……爽吧!
下面再说一说爆破的方法,有人说了,你都找到注册码了还弄什么爆破干嘛?我第一次破这个程序是用的爆破方法,因此念念不忘,同时写出来也为共享。
从上面的分析过程可以知道,关键点在0044571D /0F84 2D030000 JE 微平精彩.00445A50 ; 跳向失败,爆破点之一
把这儿改成JNE,就会弹出正确注册的窗口,但标题栏仍然显示为“未注册”,同时功能仍然受制,应该同时再改两个地方
爆破点2 00443C9D /0F85 35000000 JNE 微平精彩.00443CD8
改为00443C9D /0F84 35000000 JE 微平精彩.00443CD8 使保存新按钮能用,功能限制取消
爆破点3 00442BD3 /0F84 22000000 JZ 微平精彩.00442BFB
改为00442BD3 /0F85 22000000 JNZ 微平精彩.00442BFB 使标题栏显示为“注册版”
谢谢您能看完,再次向各位师哥、师姐、师弟、师妹、大侠、大牛致以崇高的革命的敬礼!祝你们吃嘛嘛香,破嘛嘛破!
--------------------------------------------------------------------------------
【经验总结】
也没啥可总结的,现在回头看看,感觉挺简单的,刚接触破解,要学习的东西太多了!一定要有耐心、毅力,不能轻言放弃
!支持我的动力一是兴趣,二是我相信“只要程序能从本地计算机中完整地运行一遍所有功能,就能够被破解”这一理论,
这是信心所在啊。
说实话,到了看雪论坛有种回到家的感觉,论坛的氛围真好!后悔没早点到这儿来,前几年算白活了!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年05月31日 0:41:55
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!