好友
阅读权限20
听众
最后登录1970-1-1
|
今夕望月
发表于 2011-2-28 17:59
本帖最后由 今夕望月 于 2011-2-28 18:00 编辑
软件下载地址:http://www.skycn.com/soft/24631.html
软件名称:系统美化专家12.9.9.0
工具:peid,od
首先PE查下壳ASPack 2.1 ,表示无压力啊。。直接esp定律脱了去了
再看看是delphi写的,调用DEDE找到注册按钮的事件,在 00617614下断。
这样程序注册的时候就直接可以断下来了。。
程序用试用30次的限制,不过我没有去找爆破,也怪本人能力不够啊,爆破了还要处理注册版本的问题,注册表中也没有找到相应的记录,纠结。。
00617614 . 55 PUSH EBP 程序断在这里
00617615 . 8BEC MOV EBP,ESP
........
0061764C . 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; 出现用户名
...
00617672 . E8 85ADE5FF CALL 123.004723FC
00617677 . 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; 出现注册码
0061767A . 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
0061767D . E8 D61DDFFF CALL 123.00409458 ; F7跟入
.........
00617694 > \8BC3 MOV EAX,EBX ; 到此没什么变化
00617696 . E8 C9020000 CALL 123.00617964 ; 关键call
0061769B . 84C0 TEST AL,AL
0061769D . 74 09 JE SHORT 123.006176A8 ; 这里会跳走就失败了
0061769F . 8BC3 MOV EAX,EBX
006176A1 . E8 6E000000 CALL 123.00617714 ; 此处就直接跳成功了 要找上面的call
...................................
往下面翻翻 ,就找到注册成功了 。。
0061776C . /EB 40 JlE SHORT 123.006177AE ; 关键跳? 一系列nop到这里了 想办法跳了
0061776E . |BE 01000000 MOV ESI,1
00617773 > |8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
00617776 . |50 PUSH EAX
00617777 . |B9 01000000 MOV ECX,1
。。。。。。。。。。。。。。。
跳到这里 但其实要到这里来必须是进入子程序的,
006176A1 . E8 6E000000 CALL 123.00617714 ; 此处就直接跳成功了 要找上面的call
就这句跳到上面有跳转那里
006177F8 . E8 03C3DEFF CALL 123.00403B00
006177FD . 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00617800 . BA F8786100 MOV EDX,123.006178F8 ; 恭喜!软件注册成功!
00617805 . E8 C2D1DEFF CALL 123.004049CC
0061780A . 6A 40 PUSH 40
0061780C . B9 10796100 MOV ECX,123.00617910 ; 完成功能
00617811 . BA 1C796100 MOV EDX,123.0061791C ; 恭喜!软件注册成功!
00617816 . A1 D4076700 MOV EAX,DWORD PTR DS:[6707D4]
0061781B . 8B00 MOV EAX,DWORD PTR DS:[EAX]
0061781D . E8 36B0E7FF CALL 123.00492858
00617822 . 6A 40 PUSH 40
00617824 . B9 10796100 MOV ECX,123.00617910 ; 完成功能
00617829 . BA 34796100 MOV EDX,123.00617934 ; 密码已经成功清除,下次进入不需要输入密码了!
0061782E . A1 D4076700 MOV EAX,DWORD PTR DS:[6707D4]
。。。。。。。。。。。。。。。。。继续分析算法吧
F7跟入那个 call 翻一下 找到关键
006179CC . 8A00 MOV AL,BYTE PTR DS:[EAX] ; 取用户名第一个字母 关键算法 向上找到eax的来源 估计是自动调位吧
006179CE . 25 FF000000 AND EAX,0FF ; 取eax后两位 即当前取的字符的ascii值的16进制
006179D3 . 03D8 ADD EBX,EAX ; 加到ebx
006179D5 . 81F3 05FA0B00 XOR EBX,0BFA05 ; xor运算
006179DB . FF45 F0 INC DWORD PTR SS:[EBP-10] ; 已处理位数
006179DE . 4E DEC ESI ; 未处理位数减一
006179DF .^ 75 CF JNZ SHORT 123.006179B0 ; 循环处理
006179E1 > \A1 30E86700 MOV EAX,DWORD PTR DS:[67E830] ;这里 DS:[67E830]=00657964 是个常量,也许机器不同会不同
006179E6 . 8BD0 MOV EDX,EAX
006179E8 . C1E0 04 SHL EAX,4 ; 乘16
006179EB . 03C2 ADD EAX,EDX
006179ED . 03D8 ADD EBX,EAX
006179EF . 81C3 D4A31300 ADD EBX,13A3D4 ;用户名计算完毕
...........
注册码的算法还没怎么分析的透。。反正如果输入的十进制数,会返回到eax,没做什么变化其他分情况很烦人。。
。。。。下面
00617A1C |. 3BC6 CMP EAX,ESI ; 比较什么?esi 用户名的结果和注册码的结果比较,不同就失败了 eax=0f015338
00617A1E |. 75 19 JNZ SHORT 123.00617A39 ; JNZ SHORT 00617A39 nop 下 就可以成功 跳走就完蛋
。.......
到这里也就凑活下吧,本人水平也就到这里了。。
00617A1C |. 3BC6 CMP EAX,ESI ; 这里把esi的值抄下,转换成十进制就是注册码了,写个内存注册机什么的应该好使。
不过最大的问题是,软件注册成功了,依旧提示是未注册版本。。。这个纠结了。。以后会了再搞吧。
烂帖一个,。。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|