PPwangS 发表于 2007-7-5 14:51:22

Mocha W32 TN5250 9.3 内存补丁[附菜鸟破文]

【文章标题】: 菜鸟教学
【文章作者】: PPwangS
【作者邮箱】: PPwangS#GmaiL.com
【作者主页】: HTTP://WwW.PPwangS.CoM.Cn
【作者QQ号】: 39923929
【软件名称】: Mocha W32 TN5250 9.3
【下载地址】: http://www.onlinedown.net/soft/18076.htm
【保护方式】: 注册码
【使用工具】: OD
【作者声明】: 偶是菜鸟,十分菜的菜鸟,啥都不懂的菜鸟,希望大侠们多多见谅,多多教导!
--------------------------------------------------------------------------------
【详细过程】
通过TCP/IP和TN5250协议连接IBM主机远程登录软件,可以模拟IBM5250 终端。

——————————————————————————————————
Peid查壳,没有,挺高兴。
运行,【Help】——>【about Mocha TN5250】,点注册,
输入试炼码: PPwangS,111111111111
弹出:wrong type of license key,记下来。
OD载入,超级字符串查找。
哇塞,竟然没有找到,怎么办。
不着急,慢慢来。
先F9运行,打开注册对话框,回到 OD,命令处输入:bp MessageBoxA,回车。
回到软件,点击注册。OD断下。Alt+F9返回,点击确定。
来到这里:

0047A98A|. /EB 27         JMP SHORT mtn5250.0047A9B3
0047A98C|> |895D FC       MOV DWORD PTR SS:,EBX
0047A98F|. |FF75 14       PUSH DWORD PTR SS:               ; /Style
0047A992|. |FF75 10       PUSH DWORD PTR SS:               ; |Title
0047A995|. |FF75 0C       PUSH DWORD PTR SS:                ; |Text
0047A998|. |FF75 08       PUSH DWORD PTR SS:                ; |hOwner
0047A99B|. |FF15 04774C00 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
0047A9A1|. |8945 E4       MOV DWORD PTR SS:,EAX
0047A9A4|. |C745 FC FEFFF>MOV DWORD PTR SS:,-2
0047A9AB|. |E8 0B000000   CALL mtn5250.0047A9BB
0047A9B0|. |8B45 E4       MOV EAX,DWORD PTR SS:
0047A9B3|> \E8 65DC0200   CALL mtn5250.004A861D
0047A9B8\.C3            RETN

往上找,没有发现可疑的地方,汇编不熟,怎么办捏。。
嗯,下万能断点试试吧。
点击插件,ApiBreak,万能断点。
回到软件,点击注册,一下子停下来啦。

77D3352D    F3:A5         REP MOVS DWORD PTR ES:,DWORD PTR DS>
77D3352F    8BC8            MOV ECX,EAX
77D33531    83E1 03         AND ECX,3
77D33534    F3:A4         REP MOVS BYTE PTR ES:,BYTE PTR DS:[>
77D33536    E8 E3FBFFFF   CALL USER32.77D3311E
77D3353B    5F            POP EDI
77D3353C    5E            POP ESI
77D3353D    8BC3            MOV EAX,EBX
77D3353F    5B            POP EBX
77D33540    5D            POP EBP
77D33541    C2 1000         RETN 10

看下右边寄存器,有自己的注册名,呵呵,看来这里就是了,继续继续。
F9,注意观察右边寄存器,15次之后,看见下面堆栈出现“wrong type of license key”字样了。
嗯,刚才确实是关键地方。

再试一次(偶是菜鸟,只能用笨方法),F9第14次的时候,停下来,Ctrl+F8我们让它自己过。
这时候你要紧紧的盯着右边寄存器,看看有啥熟悉的东西没。呵呵。
我看到我输入的注册码啦,F12赶紧停下来。
00424CAE   .B9 4CFC5100   MOV ECX,mtn5250.0051FC4C //这是我F12断下的地方,你们呢?
00424CB3   .C68424 9C0000>MOV BYTE PTR SS:,4
00424CBB   .E8 E0D4FDFF   CALL mtn5250.004021A0
00424CC0   .8D46 F0       LEA EAX,DWORD PTR DS:
00424CC3   .889C24 980000>MOV BYTE PTR SS:,BL
00424CCA   .8D50 0C       LEA EDX,DWORD PTR DS:
00424CCD   .83C9 FF       OR ECX,FFFFFFFF
00424CD0   .F0:0FC10A   LOCK XADD DWORD PTR DS:,ECX         ;锁定前缀

我们在那里下断吧。然后删掉所有万能断点,不然太烦啦!
再注册一次,已下载就段下来啦!
好了,往下跟吧,有希望哦!
找啊找,找到“wrong type of license key”出现了,哈哈。怎么办呢?当然入CALL了。
00424CAE   .B9 4CFC5100   MOV ECX,mtn5250.0051FC4C
00424CB3   .C68424 9C0000>MOV BYTE PTR SS:,4
00424CBB   .E8 E0D4FDFF   CALL mtn5250.004021A0
00424CC0   .8D46 F0       LEA EAX,DWORD PTR DS:
00424CC3   .889C24 980000>MOV BYTE PTR SS:,BL
00424CCA   .8D50 0C       LEA EDX,DWORD PTR DS:
00424CCD   .83C9 FF       OR ECX,FFFFFFFF
00424CD0   .F0:0FC10A   LOCK XADD DWORD PTR DS:,ECX         ;锁定前缀
00424CD4   .49            DEC ECX
00424CD5   .85C9          TEST ECX,ECX
00424CD7   .7F 0A         JG SHORT mtn5250.00424CE3
00424CD9   .8B08          MOV ECX,DWORD PTR DS:
00424CDB   .8B11          MOV EDX,DWORD PTR DS:
00424CDD   .50            PUSH EAX
00424CDE   .8B42 04       MOV EAX,DWORD PTR DS:
00424CE1   .FFD0          CALL EAX
00424CE3   >8BCF          MOV ECX,EDI
00424CE5   .E8 D6FAFFFF   CALL mtn5250.004247C0//F2先在这里下断,方便记忆,然后F7进入这里,应该就是算法啦!
00424CEA   .85C0          TEST EAX,EAX
00424CEC   .53            PUSH EBX                                 ; /Arg3
00424CED   .75 19         JNZ SHORT mtn5250.00424D08               ; |
00424CEF   .8B0D A8F85100 MOV ECX,DWORD PTR DS:            ; |
00424CF5   .53            PUSH EBX                                 ; |Arg2
00424CF6   .51            PUSH ECX                                 ; |Arg1 => 00B9FB38 ASCII "Wrong type of license Key."
00424CF7   .E8 58C60500   CALL mtn5250.00481354                  ; \mtn5250.00481354

F7进入这里,这里就是算法啦,有想学算法的把这里弄懂就OK啦!
004247C0   $6A FF         PUSH -1
004247C2   .68 58E84B00   PUSH mtn5250.004BE858
004247C7   .64:A1 0000000>MOV EAX,DWORD PTR FS:
004247CD   .50            PUSH EAX
……
……
00424A3D   .8B4C24 5C   MOV ECX,DWORD PTR SS:
00424A41   .33CC          XOR ECX,ESP
00424A43   .E8 1DEF0700   CALL mtn5250.004A3965
00424A48   .83C4 6C       ADD ESP,6C

偶是菜鸟,就跳过,看看是不是明码比较。
往下F8,慢慢来,不着急,胜利或者失败都在远方啊!

00424B0A   .8D70 01       LEA ESI,DWORD PTR DS: //右边寄存器有一串数字很可疑,是不是注册码?
00424B0D   .8D49 00       LEA ECX,DWORD PTR DS:
00424B10   >8A08          MOV CL,BYTE PTR DS:
00424B12   .83C0 01       ADD EAX,1
00424B15   .84C9          TEST CL,CL

这里有些可疑哦。
EAX 0012F8DC ASCII "156976"
ECX 0101FAA0 ASCII "PPwangS"
EDX 0101F978 ASCII "111111111111"

试试吧,先,不管了。
打开软件填入
156976,确定,唉?怎么没反映?
看看 about 里。
哈哈,授权啦已经。
但是为什么是DEMO,疑惑中。
--------------------------------------------------------------------------------
【经验总结】
用KEYMAKER做内存注册机吧,呵呵。
中断地址:00424B0A
中断次数:1
第一字节:8D
指令长度:3
看懂没?希望大侠可以出招,带带小的们,用更简单的方法来做做~~

--------------------------------------------------------------------------------
【版权声明】: 转载注明作者就可以啦!

                                                       2007年07月04日 18:18:44

http://bbs.kafan.cn/attachments/month_0707/20070704_79ab3ef581d442a3e181Ok9FATNyNgc3.png
http://bbs.kafan.cn/attachments/month_0707/20070704_8ef28ad57f86ac71976efr10TVJ7FFTs.png

bhcjl 发表于 2007-7-5 15:46:58

支持一个,下载学习

gao2008ss 发表于 2007-12-2 10:05:42

页: [1]
查看完整版本: Mocha W32 TN5250 9.3 内存补丁[附菜鸟破文]