首先:修改了几次程序发现不能启动,文件名与原文件相同则可以启动.可能存在文件名的验证,搜索” CRAZYTET”字符串,发现此处.
该处比较程序名是否被改:
004874EF|.BA 587A4800 MOV EDX,00487A58 ;CRAZYTET.EXE
004874F4|.E8 33C9F7FF CALL 00403E2C
004874F9|.74 05 JE SHORT 00487500 //je改成jmp
004874FB|.E8 64C4F7FF CALL 00403964
00487500|>33C0 XOR EAX,EAX
去第一个时间NAG:
下ShowWindow断点,跟到此处.
00446200 .53 PUSH EBX
00446201 .8BD8 MOV EBX,EAX
00446203 .8BCB MOV ECX,EBX
00446205 .8B93 08020000 MOV EDX,DWORD PTR DS:
0044620B .B8 00B00000 MOV EAX,0B000
00446210 .E8 9FFFFFFF CALL 004461B4 可能是判断第一个NAG
00446215 .66:83BB 72020>CMP WORD PTR DS:,0
0044621D EB 0E JE SHORT 0044622D ;跳过第一个NAG//改成jmp
0044621F .8BD3 MOV EDX,EBX
00446221 .8B83 74020000 MOV EAX,DWORD PTR DS:
00446227 .FF93 70020000 CALL DWORD PTR DS:
0044622D >5B POP EBX ;CrazyTet.00446200
0044622E .C3 RETN
程序启动,点菜单?/Tips,显示”此项功能只有注册版可用”对话框,定位出处
00486CD0 .55 PUSH EBP
00486CD1 .8BEC MOV EBP,ESP
00486CD3 .6A 00 PUSH 0
00486CD5 .6A 00 PUSH 0
00486CD7 .53 PUSH EBX
00486CD8 .8BD8 MOV EBX,EAX
00486CDA .33C0 XOR EAX,EAX
00486CDC .55 PUSH EBP
00486CDD .68 AB6D4800 PUSH 00486DAB
00486CE2 .64:FF30 PUSH DWORD PTR FS:
00486CE5 .64:8920 MOV DWORD PTR FS:,ESP
00486CE8 .A1 D4A64800 MOV EAX,DWORD PTR DS:
00486CED .8B00 MOV EAX,DWORD PTR DS:
00486CEF .8A40 64 MOV AL,BYTE PTR DS:
00486CF2 .8B15 3CA74800 MOV EDX,DWORD PTR DS: ;CrazyTet.0049AC7C
00486CF8 .8B12 MOV EDX,DWORD PTR DS:
00486CFA .3A42 64 CMP AL,BYTE PTR DS:
00486CFD 75 54 JNZ SHORT 00486D53 关键跳
00486CFF .6A 00 PUSH 0
00486D01 .8D4D FC LEA ECX,DWORD PTR SS:
00486D04 .A1 60AA4800 MOV EAX,DWORD PTR DS:
00486D09 .8B00 MOV EAX,DWORD PTR DS:
00486D0B .BA C06D4800 MOV EDX,00486DC0 ;r12
00486D10 .E8 DF88F8FF CALL 0040F5F4
00486D15 .8B45 FC MOV EAX,DWORD PTR SS:
00486D18 .E8 C3D1F7FF CALL 00403EE0
00486D1D .50 PUSH EAX
00486D1E .8D4D F8 LEA ECX,DWORD PTR SS:
00486D21 .A1 60AA4800 MOV EAX,DWORD PTR DS:
00486D26 .8B00 MOV EAX,DWORD PTR DS:
00486D28 .BA CC6D4800 MOV EDX,00486DCC ;m10
00486D2D .E8 C288F8FF CALL 0040F5F4
00486D32 .8B45 F8 MOV EAX,DWORD PTR SS:
00486D35 .E8 A6D1F7FF CALL 00403EE0
00486D3A .8BD0 MOV EDX,EAX
00486D3C .A1 74AA4800 MOV EAX,DWORD PTR DS:
00486D41 .8B00 MOV EAX,DWORD PTR DS:
00486D43 .59 POP ECX
00486D44 .E8 C73BFCFF CALL 0044A910 调用对话框处
分析程序其它处功能限制处多次发现这段代码:
MOV DWORD PTR FS:,ESP
MOV EAX,DWORD PTR DS:
MOV EAX,DWORD PTR DS:
MOV AL,BYTE PTR DS:
MOV EDX,DWORD PTR DS:
MOV EDX,DWORD PTR DS:
CMP AL,BYTE PTR DS:
猜测应该是全局变量!!
在: 00486CF2 .8B15 3CA74800 MOV EDX,DWORD PTR DS:上点右键查找相关参考/地址常数.
参考位于 CrazyTet:.peco 到 0048A73C
地址 反汇编 注释
00477E07 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00477E97 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00478044 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00478140 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
004788BD MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00478E88 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
0047BFFE MOV EDX,DWORD PTR DS: CrazyTet.0049AC7C
0047C3BE MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
0047C7A6 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
0047CEC5 MOV EDX,DWORD PTR DS: CrazyTet.0049AC7C
0047F5DB MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00480467 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00480D64 MOV EDX,DWORD PTR DS: CrazyTet.0049AC7C
00480D86 MOV EDX,DWORD PTR DS: CrazyTet.0049AC7C
00480E89 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00480EB5 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
004817D2 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00481AA5 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00481C49 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00482086 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00483270 MOV EDX,DWORD PTR DS: CrazyTet.0049AC7C
00483804 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00485AC8 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00486667 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
00486CF2 MOV EDX,DWORD PTR DS: (初始 CPU 选择)
004875D4 MOV EDX,DWORD PTR DS: CrazyTet.0049AC7C
004875FD MOV EDX,DWORD PTR DS: CrazyTet.0049AC7C
004878B0 MOV EAX,DWORD PTR DS: =0049AC7C
00487909 MOV ECX,DWORD PTR DS: CrazyTet.0049AC7C
全部下断点:
找到各关键跳转处,由于汇编水平很差,没有找到关键的重启验证处!所以用了个笨方法,把各处的跳转全改成相反的,例如jne改成je;je改成jne.
程序发给老大了,希望能通过啊.嘿嘿 支持了:sleepy: 【破文标题】Crazy Tetris 破文
【破文作者】Millerxie
【作者邮箱】[email protected]
【作者主页】
【破解工具】OD+untelock
【破解平台】Windows XP sp3
【软件名称】Crazy Tetris
【软件大小】
【原版下载】
【保护方式】
【软件简介】
【破解声明】
------------------------------------------------------------------------
【破解过程】脱壳方面用的脱壳机
在看雪由下载
下面是功能限制去除
一共3种特征码逐一进行分析 更改jmp更改地方下面已经给出
第一种特征码
00477DDF .64:8920 mov dword ptr fs:,esp
00477DE2 .A1 04A94800 mov eax,dword ptr ds:
00477DE7 .C700 F2030000 mov dword ptr ds:,0x3F2
00477DED .A1 04A94800 mov eax,dword ptr ds:
00477DF2 .8B00 mov eax,dword ptr ds:
00477DF4 .8B15 D4A64800 mov edx,dword ptr ds: ;CrazyTet.0049AC78
00477DFA .8B12 mov edx,dword ptr ds:
00477DFC .8A0402 mov al,byte ptr ds:
00477DFF .8B15 04A94800 mov edx,dword ptr ds: ;CrazyTet.00498CF4
00477E05 .8B12 mov edx,dword ptr ds:
00477E07 .8B0D 3CA74800 mov ecx,dword ptr ds: ;CrazyTet.0049AC7C
00477E0D .8B09 mov ecx,dword ptr ds:
00477E0F .3A0411 cmp al,byte ptr ds:
00477E12 .EB 69 jnz short CrazyTet.00477E7D 改jmp
00477E14 .8B83 D0020000 mov eax,dword ptr ds:
第二种特征码
00478022 .8B15 04A94800 mov edx,dword ptr ds: ;CrazyTet.00498CF4
00478028 .8902 mov dword ptr ds:,eax
0047802A .A1 04A94800 mov eax,dword ptr ds:
0047802F .8B00 mov eax,dword ptr ds:
00478031 .8B15 D4A64800 mov edx,dword ptr ds: ;CrazyTet.0049AC78
00478037 .8B12 mov edx,dword ptr ds:
00478039 .8A0402 mov al,byte ptr ds:
0047803C .8B15 04A94800 mov edx,dword ptr ds: ;CrazyTet.00498CF4
00478042 .8B12 mov edx,dword ptr ds:
00478044 .8B0D 3CA74800 mov ecx,dword ptr ds: ;CrazyTet.0049AC7C
0047804A .8B09 mov ecx,dword ptr ds:
0047804C .3A0411 cmp al,byte ptr ds:
0047804F .EB 69 jnz short CrazyTet.004780BA 改jmp
00478051 .8B83 D0020000 mov eax,dword ptr ds:
第三种特征码
0047BFF4 .A1 D4A64800 mov eax,dword ptr ds:
0047BFF9 .8B00 mov eax,dword ptr ds:
0047BFFB .8A40 64 mov al,byte ptr ds:
0047BFFE .8B15 3CA74800 mov edx,dword ptr ds: ;CrazyTet.0049AC7C
0047C004 .8B12 mov edx,dword ptr ds:
0047C006 .3A42 64 cmp al,byte ptr ds:
0047C009 .EB 6C jnz short CrazyTet.0047C077 改jmp
文件名认证
004874E8 .A1 74A94800 mov eax,dword ptr ds:
004874ED .8B00 mov eax,dword ptr ds:
004874EF .BA 587A4800 mov edx,CrazyTet.00487A58 ;ASCII "CRAZYTET.EXE"
004874F4 .E8 33C9F7FF call CrazyTet.00403E2C
004874F9 .74 05 je short CrazyTet.00487500 改jmp
004874FB .E8 64C4F7FF call CrazyTet.00403964
注册码长度认证
00479988|.E8 8FA3F8FF call CrazyTet.00403D1C
0047998D|.2D B4000000 sub eax,0xB4
00479992|.74 22 je short CrazyTet.004799B6 改jmp
00479994|.83E8 02 sub eax,0x2
启动时nag 没有找到 去掉方面
上面的地方 更改过后功能没有任何限制。
去不去nag是一样的。
------------------------------------------------------------------------
【破解总结】NAG 找了好长时候 都没有找到去掉方法
功能限制是一个一个耐心调试的没有用任何投机办法,感觉很累。
那位大虾有好的办法提示下,在下表示感谢
------------------------------------------------------------------------ F12暂停回溯来到关键位置去除NAG提示:
00486C58 .803D 64A64800>cmp byte ptr , 0
00486C5F .74 16 je short 00486C77 ;//jmp掉NAG
00486C61 .C605 64A64800>mov byte ptr , 0
00486C68 .A1 14AA4800 mov eax, dword ptr
00486C6D .8B00 mov eax, dword ptr
00486C6F .8B10 mov edx, dword ptr
00486C71 .FF92 D8000000 call dword ptr
00486C77 >C3 retn
///////////////////////////////////////////////////////////////////////////////////////////////
查找字符串:
ASCII 0E,"<UNREGISTERED>"
ASCII "UNREGISTERED"
ASCII "UNREGISTERED"
///////////////////////////////////////////////////////////////////////////////////////////////
00478898 .A1 04A94800 mov eax, dword ptr ;//下面这一段可用作特征码
0047889D .C700 F2030000 mov dword ptr , 3F2
004788A3 .A1 04A94800 mov eax, dword ptr
004788A8 .8B00 mov eax, dword ptr
004788AA .8B15 D4A64800 mov edx, dword ptr ;CrazyTet.0049AC78
004788B0 .8B12 mov edx, dword ptr
004788B2 .8A0402 mov al, byte ptr
004788B5 .8B15 04A94800 mov edx, dword ptr ;CrazyTet.00498CF4
004788BB .8B12 mov edx, dword ptr
004788BD .8B0D 3CA74800 mov ecx, dword ptr ;CrazyTet.0049AC7C
004788C3 .8B09 mov ecx, dword ptr
004788C5 .3A0411 cmp al, byte ptr ;//查找所有命令,定位关键位置
004788C8 .75 53 jnz short 0047891D
004788CA .BD 06000000 mov ebp, 6
004788CF .A1 38A74800 mov eax, dword ptr
004788D4 .05 84000000 add eax, 84
004788D9 .890424 mov dword ptr , eax
004788DC >BE 09000000 mov esi, 9
004788E1 .8B0424 mov eax, dword ptr
004788E4 .8BD8 mov ebx, eax
004788E6 >56 push esi
004788E7 .57 push edi
004788E8 .BE A4894700 mov esi, 004789A4 ;ASCII 0E,"<UNREGISTERED>"
///////////////////////////////////////////////////////////////////////////////////////////////
cmp al, byte ptr ;//查找所有命令,定位关键位置
///////////////////////////////////////////////////////////////////////////////////////////////
0047F5B4|.E8 6B35F8FF call 00402B24
0047F5B9|.8B15 04A94800 mov edx, dword ptr ;CrazyTet.00498CF4
0047F5BF|.8902 mov dword ptr , eax
0047F5C1|.A1 04A94800 mov eax, dword ptr
0047F5C6|.8B00 mov eax, dword ptr
0047F5C8|.8B15 D4A64800 mov edx, dword ptr ;CrazyTet.0049AC78
0047F5CE|.8B12 mov edx, dword ptr
0047F5D0|.8A0402 mov al, byte ptr
0047F5D3|.8B15 04A94800 mov edx, dword ptr ;CrazyTet.00498CF4
0047F5D9|.8B12 mov edx, dword ptr
0047F5DB|.8B0D 3CA74800 mov ecx, dword ptr ;CrazyTet.0049AC7C
0047F5E1|.8B09 mov ecx, dword ptr
0047F5E3|.3A0411 cmp al, byte ptr
0047F5E6|.0F85 AC000000 jnz 0047F698
0047F5EC|.A1 A0A74800 mov eax, dword ptr
0047F5F1|.8B00 mov eax, dword ptr
0047F5F3|.E8 20C3F9FF call 0041B918
0047F5F8|.8BD8 mov ebx, eax
0047F5FA|.6A 01 push 1
0047F5FC|.8BC3 mov eax, ebx
0047F5FE|.E8 AD7BF9FF call 004171B0
0047F603|.50 push eax ; |hDC
0047F604|.E8 2F73F8FF call <jmp.&gdi32.SetBkMode> ; \SetBkMode
0047F609|.8B43 0C mov eax, dword ptr
0047F60C|.BA 74F94700 mov edx, 0047F974 ;ASCII "Arial"
0047F611|.E8 666AF9FF call 0041607C
0047F616|.8B43 0C mov eax, dword ptr
0047F619|.C740 1C 60000>mov dword ptr , 60
0047F620|.BA 13000000 mov edx, 13
0047F625|.E8 CA6AF9FF call 004160F4
0047F62A|.8B43 0C mov eax, dword ptr
0047F62D|.33D2 xor edx, edx
0047F62F|.E8 2068F9FF call 00415E54
0047F634|.68 84F94700 push 0047F984 ;ASCII "UNREGISTERED"
0047F639|.BA 84F94700 mov edx, 0047F984 ;ASCII "UNREGISTERED"
0047F63E|.8BC3 mov eax, ebx
0047F640|.E8 CB79F9FF call 00417010
0047F645|.BA D8000000 mov edx, 0D8
0047F64A|.2BD0 sub edx, eax
0047F64C|.D1FA sar edx, 1
0047F64E|.79 03 jns short 0047F653
0047F650|.83D2 00 adc edx, 0
0047F653|>B9 50000000 mov ecx, 50
0047F658|.8BC3 mov eax, ebx
0047F65A|.E8 E178F9FF call 00416F40
0047F65F|.8B43 0C mov eax, dword ptr
0047F662|.BA FF000000 mov edx, 0FF
0047F667|.E8 E867F9FF call 00415E54
0047F66C|.68 84F94700 push 0047F984 ;ASCII "UNREGISTERED"
0047F671|.BA 84F94700 mov edx, 0047F984 ;ASCII "UNREGISTERED"
///////////////////////////////////////////////////////////////////////////////////////////////
0047C006 .3A42 64 cmp al, byte ptr ;//查找所有命令,定位关键位置
0047C009 .75 6C jnz short 0047C077
0047C00B .8B83 E0020000 mov eax, dword ptr
0047C011 .8B10 mov edx, dword ptr
0047C013 .FF92 B4000000 call dword ptr
0047C019 .84C0 test al, al
0047C01B .75 5A jnz short 0047C077
0047C01D .6A 00 push 0
0047C01F .8D4D FC lea ecx, dword ptr
0047C022 .A1 60AA4800 mov eax, dword ptr
0047C027 .8B00 mov eax, dword ptr
0047C029 .BA A8C04700 mov edx, 0047C0A8 ;ASCII "r12"
0047C02E .E8 C135F9FF call 0040F5F4
0047C033 .8B45 FC mov eax, dword ptr
0047C036 .E8 A57EF8FF call 00403EE0
0047C03B .50 push eax
0047C03C .8D4D F8 lea ecx, dword ptr
0047C03F .A1 60AA4800 mov eax, dword ptr
0047C044 .8B00 mov eax, dword ptr
0047C046 .BA B4C04700 mov edx, 0047C0B4 ;ASCII "m10"
0047C04B .E8 A435F9FF call 0040F5F4
0047C050 .8B45 F8 mov eax, dword ptr
0047C053 .E8 887EF8FF call 00403EE0
0047C058 .8BD0 mov edx, eax
0047C05A .A1 74AA4800 mov eax, dword ptr
0047C05F .8B00 mov eax, dword ptr
0047C061 .59 pop ecx
0047C062 .E8 A9E8FCFF call 0044A910 ;//tip
///////////////////////////////////////////////////////////////////////////////////////////////
补丁数据:
Patches
地址 大小 状态 旧 新 注释
00477E12 2. 激活 jnz short 00477E7D je short 00477E7D
00477EA2 2. 激活 jnz short 00477F10 je short 00477F10
0047804F 2. 激活 jnz short 004780BA je short 004780BA
0047814B 2. 激活 jnz short 004781B9 je short 004781B9
004788C8 2. 激活 jnz short 0047891D je short 0047891D
00478E93 2. 激活 jnz short 00478F03 je short 00478F03
0047C009 2. 激活 jnz short 0047C077 je short 0047C077
0047C3C9 2. 激活 jnz short 0047C436 je short 0047C436
0047C7B1 2. 激活 jnz short 0047C7C6 je short 0047C7C6
0047F5E6 6. 激活 jnz 0047F698 je 0047F698
00480472 6. 激活 jnz 00480524 je 00480524
00480E94 2. 激活 jnz short 00480E9B je short 00480E9B
00480EC0 2. 激活 je short 00480EC7 jnz short 00480EC7
004817DD 2. 激活 jnz short 00481804 je short 00481804
00481AB0 2. 激活 jnz short 00481AC6 je short 00481AC6
00482091 6. 激活 jnz 00482135 je 00482135
0048327B 2. 激活 jnz short 004832D4 je short 004832D4
0048380F 6. 激活 jnz 004838C1 je 004838C1
00485AD3 2. 激活 je short 00485AE5 jnz short 00485AE5
00486672 2. 激活 jnz short 004866CF je short 004866CF
00486C5F 2. 激活 je short 00486C77 jnz short 00486C77 //jmp掉NAG
00486CFD 2. 激活 jnz short 00486D53 je short 00486D53
00487914 2. 激活 je short 0048792C jnz short 0048792C
///////////////////////////////////////////////////////////////////////////////////////////////
F12暂停回溯来到关键位置去除tip限制:
00486CA8 .8038 00 cmp byte ptr ds:,0
00486CAB 75 1F jnz short CrazyTet.00486CCC
00486CAD .A1 FCA94800 mov eax,dword ptr ds:
00486CB2 .8B00 mov eax,dword ptr ds:
00486CB4 .8B10 mov edx,dword ptr ds:
00486CB6 .FF92 D8000000 call dword ptr ds: ;/////
00486CBC .A1 C0BD4900 mov eax,dword ptr ds:
00486CC1 .E8 26BAFAFF call CrazyTet.004326EC
00486CC6 .50 push eax ; /hWnd
00486CC7 .E8 F400F8FF call <jmp.&user32.SetForegroundWindow> ; \SetForegroundWindow
00486CCC >C3 retn
///////////////////////////////////////////////////////////////////////////////////////////////
软件爆破总结:
cmp al, byte ptr ;//查找所有命令,定位关键位置,修改下面的跳转为相反跳转;
cmp al, byte ptr ;//查找所有命令,定位关键位置,修改下面的跳转为相反跳转;
剩下的去NAG用F12暂停法回溯一下改跳转搞定。
修改特征码应该很简单^_^
软件点击退出的NAG没有去掉,软件官网还有其他的小游戏玩,点击这个窗口可以直接链接到其他的游戏,没事的时候可以练练手,所以就不去掉了。 本帖最后由 GGLHY 于 2010-7-14 14:21 编辑
CRC校验失败,有调试服务存在
005182B1 48 dec eax
005182B2 75 08 jnz short 005182BC
005182B4 FFB5 56D34000 push dword ptr
005182BA EB 1C jmp short 005182D8
005182BC 40 inc eax
005182BD 75 08 jnz short 005182C7
005182BF FFB5 3ED34000 push dword ptr
005182C5 EB 11 jmp short 005182D8
005182C7 40 inc eax
005182C8 75 08 jnz short 005182D2
005182CA FFB5 4ED34000 push dword ptr
005182D0 EB 06 jmp short 005182D8
005182D2 FFB5 52D34000 push dword ptr
005182D8 6A 00 push 0
005182DA FF95 E8D24000 call dword ptr
005182E0 8B85 F2BA4000 mov eax, dword ptr ; kernel32.ExitProcess
用脱壳机脱掉。
一、去注册NAG:
用F12的方法,可以来到:
0048697C .803D 64A64800>cmp byte ptr , 0 ***这里的变量很可疑。经观察发现下面跳的话就不会出现注册NAG
00486983 .74 16 je short 0048699B
00486985 .C605 64A64800>mov byte ptr , 0
0048698C .A1 14AA4800 mov eax, dword ptr
00486991 .8B00 mov eax, dword ptr
00486993 .8B10 mov edx, dword ptr
00486995 .FF92 D8000000 call dword ptr
0048699B >C3 retn
所以,改动方法为:
(1)cmp byte ptr , 0
改为
cmp byte ptr , 1
(2)00486983 .74 16 je short 0048699B
改为
00486983 .74 16 jmp short 0048699B
OK,经测试,去注册NAG成功!
参考位于 CrazyTet:.WWPACK 于 0048A664
地址 反汇编 注释
0048697C cmp byte ptr , 0 (初始 CPU 选择)
00486985 mov byte ptr , 0 ds:=01
二、去启动时tip的NAG
同样用F12,在段首下断点,会停在:
0044A900/$55 push ebp ***ebp=0012F430
本地调用来自 0044AAED, 00477D23, 00477DB3, 00477F60, 0047805C, 00478DA4, 004797D0, 00479833, 00479864, 00479931, 0047BD86,
0047C143, 0048184C, 00481E45, 00482FF1, 00485DA2, 00486107, 004863E9, 00486A68, <模块入口点>+13D
同时看堆栈:
0012F410 0047BD8B返回到 CrazyTet.0047BD8B 来自 CrazyTet.0044A900
0047BD28|.8B12 mov edx, dword ptr
0047BD2A|.3A42 64 cmp al, byte ptr
0047BD2D|.75 6C jnz short 0047BD9B ;***这里看看,改为JMP可以去掉提示未注册版本的NAG
0047BD2F|.8B83 E0020000mov eax, dword ptr
0047BD35|.8B10 mov edx, dword ptr
0047BD37|.FF92 B4000000call dword ptr
0047BD3D|.84C0 test al, al
0047BD3F|.75 5A jnz short 0047BD9B ;***还有这里
0047BD41|.6A 00 push 0
0047BD43|.8D4D FC lea ecx, dword ptr
0047BD46|.A1 60AA4800 mov eax, dword ptr
0047BD4B|.8B00 mov eax, dword ptr
0047BD4D|.BA CCBD4700 mov edx, 0047BDCC ;ASCII "r12"
0047BD52|.E8 8D38F9FF call 0040F5E4
0047BD57|.8B45 FC mov eax, dword ptr
0047BD5A|.E8 7181F8FF call 00403ED0
0047BD5F|.50 push eax
0047BD60|.8D4D F8 lea ecx, dword ptr
0047BD63|.A1 60AA4800 mov eax, dword ptr
0047BD68|.8B00 mov eax, dword ptr
0047BD6A|.BA D8BD4700 mov edx, 0047BDD8 ;ASCII "m10"
0047BD6F|.E8 7038F9FF call 0040F5E4
0047BD74|.8B45 F8 mov eax, dword ptr
0047BD77|.E8 5481F8FF call 00403ED0
0047BD7C|.8BD0 mov edx, eax
0047BD7E|.A1 74AA4800 mov eax, dword ptr
0047BD83|.8B00 mov eax, dword ptr
0047BD85|.59 pop ecx
0047BD86|.E8 75EBFCFF call 0044A900
0047BD8B|.B2 01 mov dl, 1 ;***返回到这
0047BD8D|.8B83 E0020000mov eax, dword ptr
0047BD93|.8B08 mov ecx, dword ptr
0047BD95|.FF91 B8000000call dword ptr
0047BD9B|>33C0 xor eax, eax
方法:
0047BD2D|.75 6C jnz short 0047BD9B
将jnz改为JMP
可以去掉提示未注册版本的NAG
不过这样仅仅是把启动时候的NAG给去掉了,如果在程序的界面上点“tip”,人人会弹出NAG的。好,我们接着看:0047BD2A处的cmp al, byte ptr ,这显然是对变量的值进行比较。我们右键,查找所有命令,全部将其F2,(我这里找到了3个)运行,将下面的条件跳跳转全部改为JMP。经试验,成功!
三:文件名校验:
用API插件断下,看堆栈:
0012FF4C 00403A36/CALL 到 ExitProcess 来自 CrazyTet.00403A31
继续回溯到:
00403A2C /75 08 jnz short 00403A36
00403A2E|. |8B06 |mov eax, dword ptr
00403A30|. |50 |push eax ; /ExitCode
00403A31|. |E8 5AD8FFFF |call <jmp.&kernel32.ExitProcess> ; \ExitProcess
接着回溯:
00403954/$53 push ebx ***本地调用/跳转来自 00403A7A, <模块入口点>+0DB, <模块入口点
>+142
00403955|.56 push esi ;CrazyTet.0048B7D4
继续,一直来到:
00487204|.A1 74A94800 mov eax, dword ptr
00487209|.8B00 mov eax, dword ptr
0048720B|.BA 74774800 mov edx, 00487774 ;crazytet.exe
00487210|.E8 07CCF7FF call 00403E1C
00487215|.74 05 je short 0048721C ***众里寻他千百度。。。
00487217|.E8 38C7F7FF call 00403954
0048721C|>33C0 xor eax, eax
0048721E|.E8 5D6EFFFF call 0047E080
00487223|.8B0D BCA64800 mov ecx, dword ptr ;CrazyTet.004996C0
00487215|.74 05 je short 0048721C
把je改为jmp即可。
四:标题栏后的(unregistered)
004817D1 .3A0411 cmp al, byte ptr
004817D4 .75 14 jnz short 004817EA ;跳吧
004817D6 .A1 CCA74800 mov eax, dword ptr
004817DB .BA 081A4800 mov edx, 00481A08 ; (unregistered)
004817D4 的jnz short 004817EA
改为JMP
右键,查找所有命令 cmp al, byte ptr ,全部将其F2
找到的命令
地址 反汇编 注释
00477CC7 cmp al, byte ptr
00477D57 cmp al, byte ptr
00477F04 cmp al, byte ptr
00478000 cmp al, byte ptr
0047877D cmp al, byte ptr
00478D48 cmp al, byte ptr
0047C0EA cmp al, byte ptr
0047C4D2 cmp al, byte ptr
0047F307 cmp al, byte ptr
00480193 cmp al, byte ptr
00480BB5 cmp al, byte ptr
00480BE1 cmp al, byte ptr
004814FE cmp al, byte ptr
004817D1 cmp al, byte ptr (初始 CPU 选择)
00481DB2 cmp al, byte ptr
00483530 cmp al, byte ptr
004857F4 cmp al, byte ptr
00486393 cmp al, byte ptr
0048762D cmp al, byte ptr
初步判断,这个变量时判断是否注册的。
004857F4 .3A0411 cmp al, byte ptr ;***点注册,停在这里
004857F7 .74 10 je short 00485809
这里je可以nop掉即可。
五、功能限制:
快速保存:
00483530|.3A0411 cmp al, byte ptr ;***快速保存
00483533 E9 AD000000 jmp 004835E5 ;***改成jmp
00483538 90 nop
去游戏框中的unregistered水印:
00480193|.3A0411 cmp al, byte ptr ;***水印
00480196 E9 AD000000 jmp 00480248 ; ***改成jmp
0048019B 90 nop
游戏载入:
00486393|.3A0411 cmp al, byte ptr ;***游戏载入
00486396 EB 5B jmp short 004863F3
暂停后的继续:
004814FE|.3A0411 cmp al, byte ptr ;***暂停后的继续
00481501 EB 25 jmp short 00481528 ;***改为jmp
00481503|.A1 D8AA4800 mov eax, dword ptr
游戏等级选择:
00477F04|.3A0411 cmp al, byte ptr ;***游戏等级选择
00477F07|.75 69 jnz short 00477F72 ;***改为jmp
颠倒选项、练习模式:
00478000|.3A0411 cmp al, byte ptr ;***颠倒选项,练习模式都在这里
00478003|.75 6C jnz short 00478071 ;***改为jmp
新建游戏选项ok按钮:
00477CC7|.3A0411 cmp al, byte ptr ;***新建游戏选项ok按钮
00477CCA EB 69 jmp short 00477D35 ;***改为jmp
这里还有:
00477D57|.3A0411 cmp al, byte ptr ;***新建游戏选项ok按钮
00477D5A|.75 6C jnz short 00477DC8 ;***改为jmp
消行:
0047F307|.3A0411 cmp al, byte ptr ;***消行
0047F30A|.0F85 AC000000 jnz 0047F3BC ;***jmp
选人物肖像:
0047C0EA|.3A0411 cmp al, byte ptr ;***选人物肖像
0047C0ED|.75 6B jnz short 0047C15A ;***改为jmp
和这里:
0047C4D2 .3A0411 cmp al, byte ptr ;***选人物肖像
0047C4D5 .75 13 jnz short 0047C4EA ;***改为jmp
还有这里:
0047877D .3A0411 cmp al, byte ptr ;***选人物肖像
00478780 .75 53 jnz short 004787D5 ;***改为jmp
(上班抽空搞的)待续... bp ShowWindow 找到Nag
00486C58 803D 64A64800 0>cmp byte ptr ds:,0
00486C5F 74 16 je short 00486C77
00486C61 C605 64A64800 0>mov byte ptr ds:,0
00486C68 A1 14AA4800 mov eax,dword ptr ds:
je改成jmp即可
两个看起来关键的标志位,右键查找地址常量,每个命令下断后跑起,运行程序功能中断后,根据上下改一下代码就好了
0047BFF4|.A1 D4A64800 mov eax,dword ptr ds:
0047BFF9|.8B00 mov eax,dword ptr ds:
0047BFFB|.8A40 64 mov al,byte ptr ds:
0047BFFE|.8B15 3CA74800 mov edx,dword ptr ds: ;CrazyTet.0049AC7C
0047C004|.8B12 mov edx,dword ptr ds:
去掉关闭程序弹出的窗体,思路也是bp ShowWindow然后回溯:
004814C6 8B00 mov eax,dword ptr ds:
004814C8 8B10 mov edx,dword ptr ds:
004814CA FF92 D8000000 call dword ptr ds://nop
004814D0 A1 7CAB4800 mov eax,dword ptr ds:
004814D5 8B00 mov eax,dword ptr ds:
颠倒模式记分暗桩:
0047F908 > \A1 C4A94800 mov eax,dword ptr ds:
0047F90D .8038 00 cmp byte ptr ds:,0
0047F910 .74 19 je short 0047F92B //jmp
0047F912 .A1 9CA94800 mov eax,dword ptr ds:
思路:程序在执行暗桩之前会验证是否注册
只能保存一次游戏暗桩:
00486017 A1 70AB4800 mov eax,dword ptr ds:
0048601C 8038 00 cmp byte ptr ds:,0
0048601F 74 67 je short 00486088 //jmp
00486021 33D2 xor edx,edx
思路:MessageBox即可 NISY大,这一贴什么时候兑现!!难道就这样沉了? 精品文章 学习了 太好了正在找 ,占位学习!
页:
1
[2]