- UID
- 57194
注册时间2008-11-1
阅读权限10
最后登录1970-1-1
周游历练
TA的每日心情 | 开心 2023-10-24 07:18 |
---|
签到天数: 6 天 [LV.2]偶尔看看I
|
大家好,这个是我进论坛以来首个发帖! 有什么不对,还望各位多指教!谢谢
V8主流发型设计软件破解祥解
【软件名称】《V8主流发型设计软件》V8
【软件大小】19.6M
【运行平台】Win98/Win2K/WinXP
【编写语言】Microsoft Visual C++ 6.0
【破解平台】WinXP+SP3
【加壳方式】无
【脱壳方法】无
【加密方法】注册类
【加密强度】简单
【破解软件】C32Asm 、PEID0.95、OllyICE
【破解类型】爆破
【下载地址】http://www.v843.net/
【破 解 人】Mongolnet
【软件简介】
不做解释了,很复杂
【第一个破解过程---爆破】
=======================================================================================
=======================================================================================
=======================================================================================
=======================================================================================
【破解分析】
软件运行时,如果没有注册,会有弹出注册窗口,并且输入错误注册码后提示"注册失败"的提示,这为我们破解软件提供了很好的切入点。
1.用“PEiD v0.95”对原文件进行检查,发现没有加壳,哈哈,节省了不少时间。软件是用“C++”编写的。
2.用“C32Asm ”查找壳参考的所有字符串。
查到的字符串如下:
============================================
您还能试用%d次,请您尽快注册。
::0041CBBD->PUSH BD
试用已经到期,请您注册。
::0041CC2D->PUSH BE
注册失败。
::0041D022->PUSH BF
::0041D033->PUSH BF
注册成功,感谢您的注册 。祝您工作愉快 !
::0041D000->PUSH C0 PUSH 0C0
未注册
::0042AABB->PUSH C1
您的软件未注册不能使用这项功能!请您注册后再使用。
::0040C6C4->PUSH C2
::00425D1D->PUSH C2
==============================================
3.在“OllyICE”中调试找到代码如下:
第一个要解决的: 您还能试用%d次,请您尽快注册。
第二个要解决的: 试用已经到期,请您注册。
0041CC29 . 85C0 test eax, eax
0041CC2B . 7F 36 jg short 0041CC63 这里是关键跳(默认是不跳)
0041CC2D . 68 BE000000 push 0BE ; 试用已经到期,请您注册。
0041CC32 . 8D4C24 0C lea ecx, dword ptr [esp+C]
0041CC36 . E8 D9230100 call <jmp.&MFC42.#4160_CString::LoadS>
0041CC3B . 8B4424 08 mov eax, dword ptr [esp+8]
0041CC3F . 8BCE mov ecx, esi
0041CC41 . 50 push eax
0041CC42 . 68 E6050000 push 5E6
0041CC47 . E8 BC230100 call <jmp.&MFC42.#5953_CWnd::SetDlgIt>
0041CC4C . 6A 00 push 0
0041CC4E . 8D4E 60 lea ecx, dword ptr [esi+60]
0041CC51 . E8 00240100 call <jmp.&MFC42.#6215_CWnd::ShowWind>
0041CC56 . 6A 00 push 0
0041CC58 . 8D8E 2C010000 lea ecx, dword ptr [esi+12C]
0041CC5E . E8 FF230100 call <jmp.&MFC42.#2642_CWnd::EnableWi>
0041CC63 > 8D4C24 0C lea ecx, dword ptr [esp+C]
0041CC67 . C68424 200100>mov byte ptr [esp+120], 0
0041CC6F . E8 70230100 call <jmp.&MFC42.#800_CString::~CStri>
第三个要解决的: 注册失败。
0041CFD0 . 85C0 test eax, eax
0041CFD2 . 74 56 je short 0041D02A ; 此处禁止跳
0041CFD4 . A1 AC6B4400 mov eax, dword ptr [446BAC]
0041CFD9 . 85C0 test eax, eax
0041CFDB . 74 3C je short 0041D019 ; 此处禁止跳
0041CFDD . 8B5424 08 mov edx, dword ptr [esp+8]
0041CFE1 . 8D4424 0C lea eax, dword ptr [esp+C]
0041CFE5 . 52 push edx ; /FileName
0041CFE6 . 50 push eax ; |String
0041CFE7 . 68 B8504400 push 004450B8 ; |info
0041CFEC . 68 DC504400 push 004450DC ; |sys
0041CFF1 . FF15 34614300 call dword ptr [<&KERNEL32.WritePriva>; \WritePrivateProfileStringA
0041CFF7 . 8B4E 20 mov ecx, dword ptr [esi+20]
第四个要解决的: 未注册
0042AA47 . 85C0 test eax, eax
0042AA49 . 75 2C jnz short 0042AA77 ; 关键跳(默认是跳)
0042AA4B > 8D4C24 14 lea ecx, dword ptr [esp+14]
0042AA4F . C68424 380100>mov byte ptr [esp+138], 0
0042AA57 . E8 88450000 call <jmp.&MFC42.#800_CString::~CStri>
0042AA5C . 8D4C24 10 lea ecx, dword ptr [esp+10]
0042AA60 . C78424 380100>mov dword ptr [esp+138], -1
0042AA6B . E8 74450000 call <jmp.&MFC42.#800_CString::~CStri>
0042AA70 . 33C0 xor eax, eax
0042AA72 . E9 57010000 jmp 0042ABCE
0042AA77 > 8B4C24 24 mov ecx, dword ptr [esp+24]
0042AA7B . 8B5424 1C mov edx, dword ptr [esp+1C]
0042AA7F . 8BC1 mov eax, ecx
0042AA81 . 83C1 FE add ecx, -2
0042AA84 . 2BC2 sub eax, edx
0042AA86 . 8B5424 28 mov edx, dword ptr [esp+28]
0042AA8A . 2D D9010000 sub eax, 1D9
0042AA8F . 81C2 9CFDFFFF add edx, -264
0042AA95 . 53 push ebx
0042AA96 . 2BC8 sub ecx, eax
0042AA98 . 52 push edx
0042AA99 . 51 push ecx
0042AA9A . 68 4F020000 push 24F
0042AA9F . 50 push eax
0042AAA0 . 8BCF mov ecx, edi
0042AAA2 . E8 99460000 call <jmp.&MFC42.#4299_CWnd::MoveWind>
0042AAA7 . 6A 05 push 5
0042AAA9 . 8BCF mov ecx, edi
0042AAAB . E8 A6450000 call <jmp.&MFC42.#6215_CWnd::ShowWind>
0042AAB0 . B9 40000000 mov ecx, 40
0042AAB5 . 33C0 xor eax, eax
0042AAB7 . 8D7C24 30 lea edi, dword ptr [esp+30]
0042AABB . 68 C1000000 push 0C1 ; 未注册
0042AAC0 . F3:AB rep stos dword ptr es:[edi]
0042AAC2 . 8D4C24 14 lea ecx, dword ptr [esp+14]
0042AAC6 . E8 49450000 call <jmp.&MFC42.#4160_CString::LoadS>
注释:上面的很显然,0042AA49地址的关键跳,如果跳那么0042AA72处的JMP将不起作用,软件就提示未注册
如果是不跳那么0042AA72处的JMP将直接跳过未注册这个部分!
第五个要解决的: 您的软件未注册不能使用这项功能!请您注册后再使用。
未注册版本将有很多限制比如:"您的软件未注册不能使用这项功能!请您注册后再使用。"之类的
因此我们将要解决掉这些繁琐的试用部分。
00425D12 . 6A 00 push 0
00425D14 . 75 2C jnz short 00425D42 ; 关键跳,默认是不跳 改为跳
00425D16 . 8B41 20 mov eax, dword ptr [ecx+20]
00425D19 . 6A 00 push 0
00425D1B . 6A 00 push 0
00425D1D . 68 C2000000 push 0C2 您的软件未注册不能使用这项功能!请您注册后再使用。
00425D22 . 50 push eax
00425D23 . B9 78674400 mov ecx, 00446778
00425D28 . E8 E3370000 call 00429510
00425D2D . 8B8C24 B00500>mov ecx, dword ptr [esp+5B0]
00425D34 . 64:890D 00000>mov dword ptr fs:[0], ecx
00425D3B . 81C4 BC050000 add esp, 5BC
00425D41 . C3 retn
00425D42 > 8D4C24 0C lea ecx, dword ptr [esp+C]
关键跳地址是00425D14 ,此处的JNZ默认是不跳的,此处改为JMP ,那么下面00425D1D处的提示将失效。
因此我们就达到爆破的效果了。
0040C69D . 85C0 test eax, eax
0040C69F . 0F8C E6000000 jl 0040C78B ; 这里是关键跳,默认为跳
0040C6A5 . 8B9424 000400>mov edx, dword ptr [esp+400]
0040C6AC . 6A 00 push 0
0040C6AE . C702 01000000 mov dword ptr [edx], 1
0040C6B4 . A1 AC6B4400 mov eax, dword ptr [446BAC]
0040C6B9 . 85C0 test eax, eax
0040C6BB . 75 1C jnz short 0040C6D9 ; 关键
0040C6BD . 8B46 20 mov eax, dword ptr [esi+20]
0040C6C0 . 6A 00 push 0
0040C6C2 . 6A 00 push 0
0040C6C4 . 68 C2000000 push 0C2
0040C6C9 . 50 push eax
0040C6CA . B9 78674400 mov ecx, 00446778
0040C6CF . E8 3CCE0100 call 00429510 ; 您的软件未注册不能使用这项功能!请您注册后再使用。
0040C6D4 . E9 B2000000 jmp 0040C78B
0040C6D9 > 8D4C24 0C lea ecx, dword ptr [esp+C]
0040C6DD . E8 EEB6FFFF call 00407DD0
0040C6E2 . 8D4C24 04 lea ecx, dword ptr [esp+4]
0040C6E6 . C68424 E00300>mov byte ptr [esp+3E0], 1
0040C6EE . 51 push ecx
0040C6EF . 8D4C24 70 lea ecx, dword ptr [esp+70]
0040C6F3 . E8 002A0200 call <jmp.&MFC42.#858_CString::operat>
0040C6F8 . 8D4C24 08 lea ecx, dword ptr [esp+8]
0040C6FC . E8 BD270200 call <jmp.&MFC42.#2514_CDialog::DoMod>
0040C701 . 8B5424 68 mov edx, dword ptr [esp+68]
0040C705 . 8956 60 mov dword ptr [esi+60], edx
0040C708 . 8D8C24 980300>lea ecx, dword ptr [esp+398]
0040C70F . C68424 E00300>mov byte ptr [esp+3E0], 7
0040C717 . E8 1E2A0200 call <jmp.&MFC42.#765_CProgressCtrl::>
0040C71C . 8D8C24 A00200>lea ecx, dword ptr [esp+2A0]
0040C723 . C68424 E00300>mov byte ptr [esp+3E0], 6
0040C72B . E8 70000200 call 0042C7A0
0040C730 . 8D8C24 A80100>lea ecx, dword ptr [esp+1A8]
0040C737 . C68424 E00300>mov byte ptr [esp+3E0], 5
0040C73F . E8 5C000200 call 0042C7A0
0040C744 . 8D8C24 680100>lea ecx, dword ptr [esp+168]
0040C74B . C68424 E00300>mov byte ptr [esp+3E0], 4
0040C753 . E8 DC290200 call <jmp.&MFC42.#692_CListBox::~CLis>
0040C758 . 8D4C24 70 lea ecx, dword ptr [esp+70]
0040C75C . C68424 E00300>mov byte ptr [esp+3E0], 3
0040C764 . E8 37000200 call 0042C7A0
0040C769 . 8D4C24 6C lea ecx, dword ptr [esp+6C]
0040C76D . C68424 E00300>mov byte ptr [esp+3E0], 2
0040C775 . E8 6A280200 call <jmp.&MFC42.#800_CString::~CStri>
0040C77A . 8D4C24 08 lea ecx, dword ptr [esp+8]
0040C77E . C68424 E00300>mov byte ptr [esp+3E0], 0
0040C786 . E8 2F280200 call <jmp.&MFC42.#641_CDialog::~CDial>
0040C78B > 8D4C24 04 lea ecx, dword ptr [esp+4]
0040C78F . C78424 E00300>mov dword ptr [esp+3E0], -1
注释:0040C69F处的跳改为JMP这样无条件专挑,那么就可以解决掉0040C6CF处的提示。
-------------------------------
经过以上分析,我们看出,关键点有5个
【破解方法】
0041CC2B 处 jg 改为 JMP ; 必须跳
0041CFD2 处 je 改为 JNZ ; 此处禁止跳或者NOP
0041CFDB 处 je 改为 JNZ ; 此处禁止跳或者NOP
0042AA49 处 jnz 改为 JE ; 禁止跳或者NOP
00425D14 处 jnz 改为 JMP ; 必须跳
0040C69F 处 jl 改为 JMP ; 必须跳
0040C6BB 处 jnz 改为 JMP ; 必须跳
经过以上的改动,软件就可以正常使用了!!!!!!!!!!!!
=======================================================================================
=======================================================================================
======================================================================================= |
评分
-
查看全部评分
|