SMC实现VProtect patch HWID
本帖最后由 little3388 于 2011-8-20 13:59 编辑方法:找patch地址,并patch 合法HWID,过效检、写SMC代码
本代码在V1.91与V1.88测试通过,2.0X还未测试,本文只是抛砖引玉。
思路参考:http://www.52pojie.cn/thread-104750-1-1.html
0126E000 >60 pushad ; 附加段开始
0126E001 BF 3C800101 mov edi, <&KERNEL32.CreateFileW> ; 前提要增加输入表
0126E006 8B07 mov eax, dword ptr ; 分别是IPHLPAPI.GetAdaptersInfo
0126E008 A3 00E12601 mov dword ptr , eax ; 与msvcrt.strcmp
0126E00D C707 1AE02601 mov dword ptr , 0126E01A
0126E013 61 popad
0126E014 EB 26 jmp short 0126E03C
0126E016 C3 retn
0126E017 90 nop
0126E018 90 nop
0126E019 90 nop
0126E01A 90 nop
0126E01B FF05 20E52601 inc dword ptr ; 过效检
0126E021 833D 20E52601 0>cmp dword ptr , 2
0126E028 75 09 jnz short 0126E033
0126E02A 3E:C74424 04 D0>mov dword ptr ds:, 0126E1D0 ; 指原程序文件名,可改名
0126E033- FF25 00E12601 jmp dword ptr
0126E039 C3 retn
0126E03A 90 nop
0126E03B 90 nop
0126E03C 60 pushad ; Hook IPHLPAPI.GetAdaptersInfo 开始
0126E03D BF 1FD02601 mov edi, <&IPHLPAPI.GetAdaptersInfo>
0126E042 8B07 mov eax, dword ptr
0126E044 A3 00E82601 mov dword ptr , eax
0126E049 E8 00000000 call 0126E04E
0126E04E 5F pop edi
0126E04F 83C7 40 add edi, 40
0126E052 8BD8 mov ebx, eax
0126E054 2BFB sub edi, ebx
0126E056 83EF 05 sub edi, 5
0126E059 68 00E32601 push 0126E300
0126E05E 6A 40 push 40
0126E060 6A 01 push 1
0126E062 50 push eax
0126E063 FF15 6C800101 call dword ptr [<&KERNEL32.VirtualProtect>]
0126E069 C603 E9 mov byte ptr , 0E9
0126E06C 43 inc ebx
0126E06D 68 00E32601 push 0126E300
0126E072 6A 40 push 40
0126E074 6A 04 push 4
0126E076 50 push eax
0126E077 FF15 6C800101 call dword ptr [<&KERNEL32.VirtualProtect>]
0126E07D 893B mov dword ptr , edi
0126E07F 61 popad
0126E080- E9 4B65DAFF jmp 010145D0
0126E085 C3 retn
0126E086 90 nop
0126E087 90 nop
0126E088 90 nop
0126E089 90 nop
0126E08A 90 nop
0126E08B 90 nop
0126E08C 90 nop
0126E08D 90 nop
0126E08E FF05 00E52601 inc dword ptr ; Hook Patch
0126E094 833D 00E52601 0>cmp dword ptr , 1
0126E09B 75 4E jnz short 0126E0EB
0126E09D 60 pushad
0126E09E E8 00000000 call 0126E0A3
0126E0A3 5F pop edi
0126E0A4 83C7 70 add edi, 70
0126E0A7 8B5D 7C mov ebx, dword ptr
0126E0AA 81C3 B57D0300 add ebx, 37DB5
0126E0B0 2BFB sub edi, ebx
0126E0B2 83EF 05 sub edi, 5
0126E0B5 68 00E32601 push 0126E300
0126E0BA 6A 40 push 40
0126E0BC 6A 01 push 1
0126E0BE 53 push ebx
0126E0BF FF15 6C800101 call dword ptr [<&KERNEL32.VirtualProtect>]
0126E0C5 C603 E9 mov byte ptr , 0E9
0126E0C8 43 inc ebx
0126E0C9 68 00E32601 push 0126E300
0126E0CE 6A 40 push 40
0126E0D0 6A 04 push 4
0126E0D2 53 push ebx
0126E0D3 FF15 6C800101 call dword ptr [<&KERNEL32.VirtualProtect>]
0126E0D9 893B mov dword ptr , edi
0126E0DB 8B2D 00E82601 mov ebp, dword ptr
0126E0E1 83C5 05 add ebp, 5
0126E0E4 892D 00E42601 mov dword ptr , ebp
0126E0EA 61 popad
0126E0EB 8BFF mov edi, edi
0126E0ED 55 push ebp
0126E0EE 8BEC mov ebp, esp
0126E0F0 FF25 00E42601 jmp dword ptr
0126E0F6 90 nop
0126E0F7 90 nop
0126E0F8 90 nop
0126E0F9 90 nop
0126E0FA 90 nop
0126E0FB 90 nop
0126E0FC 90 nop
0126E0FD 90 nop
0126E0FE 90 nop
0126E0FF 90 nop
0126E100 90 nop
0126E101 90 nop
0126E102 90 nop
......
0126E110 90 nop
0126E111 90 nop
0126E112 90 nop
0126E113 C747 4C 0500000>mov dword ptr , 5 ; Patch HWID
0126E11A 60 pushad
0126E11B FF05 10E52601 inc dword ptr
0126E121 833D 10E52601 0>cmp dword ptr , 1
0126E128 75 1B jnz short 0126E145
0126E12A 8B5D 54 mov ebx, dword ptr
0126E12D 81C3 BC7D0300 add ebx, 37DBC ;SMC关键点
0126E133 891D 00F72601 mov dword ptr , ebx
0126E139 81EB 3CBE0100 sub ebx, 1BE3C ;patch关键点
0126E13F 891D 00FA2601 mov dword ptr , ebx
0126E145 FF35 00FA2601 push dword ptr
0126E14B 68 79E12601 push 0126E179 ; 栈中地址指向本机HWID
0126E150 FF15 14F02601 call dword ptr ; 用msvcrt.strcmp作比较
0126E156 83F8 01 cmp eax, 1
0126E159 74 12 je short 0126E16D
0126E15B B9 20000000 mov ecx, 20
0126E160 8B3D 00FA2601 mov edi, dword ptr
0126E166 BE A7E12601 mov esi, 0126E1A7 ; 栈中地址指向合法HWID
0126E16B F3:A4 rep movs byte ptr es:, byte ptr
0126E16D 83C4 08 add esp, 8
0126E170 61 popad
0126E171 FF25 00F72601 jmp dword ptr
60 BF 3C 80 01 01 8B 07 A3 00 E1 26 01 C7 07 1A E0 26 01 61 EB 26 C3 90 90 90 90 FF 05 20 E5 26
01 83 3D 20 E5 26 01 02 75 09 3E C7 44 24 04 D0 E1 26 01 FF 25 00 E1 26 01 C3 90 90 60 BF 1F D0
26 01 8B 07 A3 00 E8 26 01 E8 00 00 00 00 5F 83 C7 40 8B D8 2B FB 83 EF 05 68 00 E3 26 01 6A 40
6A 01 50 FF 15 6C 80 01 01 C6 03 E9 43 68 00 E3 26 01 6A 40 6A 04 50 FF 15 6C 80 01 01 89 3B 61
E9 4B 65 DA FF C3 90 90 90 90 90 90 90 90 FF 05 00 E5 26 01 83 3D 00 E5 26 01 01 75 4E 60 E8 00
00 00 00 5F 83 C7 70 8B 5D 7C 81 C3 B5 7D 03 00 2B FB 83 EF 05 68 00 E3 26 01 6A 40 6A 01 53 FF
15 6C 80 01 01 C6 03 E9 43 68 00 E3 26 01 6A 40 6A 04 53 FF 15 6C 80 01 01 89 3B 8B 2D 00 E8 26
01 83 C5 05 89 2D 00 E4 26 01 61 8B FF 55 8B EC FF 25 00 E4 26 01 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 C7 47 4C 05 00 00 00 60 FF 05 10 E5 26
01 83 3D 10 E5 26 01 01 75 1B 8B 5D 54 81 C3 BC 7D 03 00 89 1D 00 F7 26 01 81 EB 3C BE 01 00 89
1D 00 FA 26 01 FF 35 00 FA 26 01 68 79 E1 26 01 FF 15 14 F0 26 01 83 F8 01 74 12 B9 20 00 00 00
8B 3D 00 FA 26 01 BE A7 E1 26 01 F3 A4 83 C4 08 61 FF 25 00 F7 26 01
patch原程序,用OD查看区段0126E00可有助理解代码
解压后,用winhex打开notepad_VP.exe 搜索D687D298A5E81B2821AAE638010BA18B 字符串,替换你本机的机器码,就可以打开了
楼主的头像很诱惑.. 本帖最后由 little3388 于 2011-8-20 21:27 编辑
回复 sniy 的帖子
原理方法http://www.52pojie.cn/thread-104750-1-1.html 已上传视频演示 如果有详细的分析就好了,LZ的分析过程比cektop发的文章还简洁~ 支持,不过我感觉有附件要好些。 支持下 好教程`` 楼主好厉害,谢谢分享 有视频支持了。 哈哈~谢谢楼主分享了~貌似刚看过你的另一个视频嘿嘿 不错哦,支持楼主的分享