我是人民币 发表于 2014-5-20 21:24

sqlbk 的 反调试易语言模块 2.0 破解

   前几天sqlbk牛逼轰轰的在精易上发了反调试模块2.0,声称有强大的硬盘逻辑锁。
    如果电脑被加了锁,重启后,显示屏上有几个鲜红的大字,po jie zhe !!!
    新手遇到这种情况只有找sqlbk要密码,或者干脆重新分区然后装系统,这样的话,损失就大了。
    根据sqlbk群里的有人透露,sqlbk的硬盘逻辑锁是花钱在别人那里买的。
    今天新注册了吾爱的号,没事就分析了一下具体实现原理,和破解方案。
      --------------------------------------------------------------------------------
    sqlbk声称有强大的OD检测,可以检测99%的OD。
sqlbk在群里发了一个简单的CM,我已经放在压缩包里。
用OD的字符串搜索,居然搜索出如此奇葩的东西:

      
注意这里,
地址=004871E0
反汇编=mov eax,防破解成.004FD75A
文本字符串=\\.\\physicaldrive0


大家可能已经猜的八九不离10 用 \\.\\physicaldrive0 来读写硬盘,而360正好对这里不管~


这一下就方便多了,Hook CreateFileA 或 CreateFileW 不就好了吗?
但是这样仍旧麻烦。
把目光往上看,"密码不可以为空"
跟进去。
00486EAC|.6A 00         push 0x0
00486EAE|.6A 00         push 0x0
00486EB0|.6A 00         push 0x0
00486EB2|.68 01030080   push 0x80000301
00486EB7|.6A 00         push 0x0
00486EB9|.68 00000000   push 0x0
00486EBE|.68 04000080   push 0x80000004
00486EC3|.6A 00         push 0x0
00486EC5|.68 1CD54F00   push 防破解成.004FD51C                     ;密码不可以为空的!!
00486ECA|.68 03000000   push 0x3
00486ECF|.BB F0034900   mov ebx,防破解成.004903F0
00486ED4|.E8 07830000   call 防破解成.0048F1E0

这里大概是在调用易语言的信息框显示信息把!


所以往上找,最后跟到了函数的首部,
00486DEF/$55            push ebp
00486DF0|.8BEC          mov ebp,esp
00486DF2|.81EC 20000000 sub esp,0x20
00486DF8      C745 FC 00000>mov dword ptr ss:,0x0
00486DFF|.C745 F8 00000>mov ,0x0
00486E06|.C745 F4 00000>mov ,0x0
00486E0D|.C745 F0 00000>mov ,0x0
00486E14|.C745 FC 01000>mov ,0x1
00486E1B|.837D FC 01    cmp ,0x1
00486E1F      0F85 E8020000 jnz 防破解成.0048710D
00486E25|.FF45 FC       inc
00486E28|.68 04000080   push 0x80000004
00486E2D|.6A 00         push 0x0
00486E2F|.8B5D 08       mov ebx,
00486E32|.8B03          mov eax,dword ptr ds:
00486E34|.85C0          test eax,eax
00486E36|.75 05         jnz X防破解成.00486E3D




用鼠标选中 00486E1F 0F85 E8020000 jnz 防破解成.0048710D 这一行,借助吾爱的OD,很清晰的可以看见,他跳过了一段很长的地方。
再找到目的地,发现已经到了尾部,所以 jmp 过去。


硬盘逻辑锁这一强大的暗庄就被一个简单的jmp解决。



       返回到上层调用,小心翼翼的一步一步跟踪下去,发现了一些提升进程权限的代码,所以后面他可能要干一些坏事。
          继续走,最后在这个附近你可能要格外的小心,
          004D99A1   . /74 02         je X防破解成.004D99A5
004D99A3   . |0C 04         or al,0x4
004D99A5   \6A 00         push 0x0                                        ; /Reserved = 0
004D99A7      50            push eax                                        ; |Options
004D99A8      FF15 ECB34F00 call dword ptr ds:[<&USER32.ExitWindowsEx>]   ; \ExitWindowsEx

这段代码不比过多的解释,关机。
    跳过调用,这个模块的反调试就彻底被损坏了,随心所欲把,鄙视模块作者,源码居然想卖500多~

研究了一下加锁函数,
反汇编如下:
       00486DEF/$55            push ebp
00486DF0|.8BEC          mov ebp,esp
00486DF2|.81EC 20000000 sub esp,0x20
00486DF8      C745 FC 00000>mov dword ptr ss:,0x0
00486DFF|.C745 F8 00000>mov ,0x0
00486E06|.C745 F4 00000>mov ,0x0
00486E0D|.C745 F0 00000>mov ,0x0
00486E14|.C745 FC 01000>mov ,0x1
00486E1B|.837D FC 01    cmp ,0x1
00486E1F      0F85 E8020000 jnz 防破解成.0048710D
00486E25|.FF45 FC       inc
00486E28|.68 04000080   push 0x80000004
00486E2D|.6A 00         push 0x0
00486E2F|.8B5D 08       mov ebx,
00486E32|.8B03          mov eax,dword ptr ds:
00486E34|.85C0          test eax,eax
00486E36|.75 05         jnz X防破解成.00486E3D
00486E38|.B8 4BD24F00   mov eax,防破解成.004FD24B
00486E3D|>50            push eax
00486E3E|.68 01000000   push 0x1
00486E43|.BB D0FD4800   mov ebx,防破解成.0048FDD0
00486E48|.E8 93830000   call 防破解成.0048F1E0
00486E4D|.83C4 10       add esp,0x10
00486E50|.8945 EC       mov ,eax
00486E53|.8B45 EC       mov eax,
00486E56|.50            push eax
00486E57|.8B5D F8       mov ebx,
00486E5A|.85DB          test ebx,ebx
00486E5C|.74 09         je X防破解成.00486E67
00486E5E|.53            push ebx
00486E5F|.E8 64830000   call 防破解成.0048F1C8
00486E64|.83C4 04       add esp,0x4
00486E67|>58            pop eax
00486E68|.8945 F8       mov ,eax
00486E6B|.B8 13D54F00   mov eax,防破解成.004FD513
00486E70|.33C9          xor ecx,ecx
00486E72|.85C0          test eax,eax
00486E74|.74 03         je X防破解成.00486E79
00486E76|.8B48 04       mov ecx,dword ptr ds:
00486E79|>51            push ecx
00486E7A|.83C0 08       add eax,0x8
00486E7D|.50            push eax
00486E7E|.8B45 F8       mov eax,
00486E81|.33DB          xor ebx,ebx
00486E83|.85C0          test eax,eax
00486E85|.74 03         je X防破解成.00486E8A
00486E87|.8B58 04       mov ebx,dword ptr ds:
00486E8A|>83C0 08       add eax,0x8
00486E8D|.50            push eax
00486E8E|.3BD9          cmp ebx,ecx
00486E90|.B8 01000000   mov eax,0x1
00486E95|.75 0A         jnz X防破解成.00486EA1
00486E97|.48            dec eax
00486E98|.85C9          test ecx,ecx
00486E9A|.74 05         je X防破解成.00486EA1
00486E9C|.E8 A2FEFFFF   call 防破解成.00486D43
00486EA1|>83C4 0C       add esp,0xC
00486EA4|.85C0          test eax,eax
00486EA6|.0F85 35000000 jnz 防破解成.00486EE1
00486EAC|.6A 00         push 0x0
00486EAE|.6A 00         push 0x0
00486EB0|.6A 00         push 0x0
00486EB2|.68 01030080   push 0x80000301
00486EB7|.6A 00         push 0x0
00486EB9|.68 00000000   push 0x0
00486EBE|.68 04000080   push 0x80000004
00486EC3|.6A 00         push 0x0
00486EC5|.68 1CD54F00   push 防破解成.004FD51C                     ;密码不可以为空的!!
00486ECA|.68 03000000   push 0x3
00486ECF|.BB F0034900   mov ebx,防破解成.004903F0
00486ED4|.E8 07830000   call 防破解成.0048F1E0
00486ED9|.83C4 28       add esp,0x28
00486EDC|.E9 55020000   jmp 防破解成.00487136
00486EE1|>68 05000080   push 0x80000005
00486EE6|.6A 00         push 0x0
00486EE8|.8B45 F8       mov eax,
00486EEB|.85C0          test eax,eax
00486EED|.75 05         jnz X防破解成.00486EF4
00486EEF|.B8 73D24F00   mov eax,防破解成.004FD273
00486EF4|>50            push eax
00486EF5|.68 01000000   push 0x1
00486EFA|.BB 50F34800   mov ebx,防破解成.0048F350
00486EFF|.E8 DC820000   call 防破解成.0048F1E0
00486F04|.83C4 10       add esp,0x10
00486F07|.8945 EC       mov ,eax
00486F0A|.68 05000080   push 0x80000005
00486F0F|.6A 00         push 0x0
00486F11|.8B45 F8       mov eax,
00486F14|.85C0          test eax,eax
00486F16|.75 05         jnz X防破解成.00486F1D
00486F18|.B8 73D24F00   mov eax,防破解成.004FD273
00486F1D|>50            push eax
00486F1E|.68 01030080   push 0x80000301
00486F23|.6A 00         push 0x0
00486F25|.FF75 EC       push
00486F28|.68 01030080   push 0x80000301
00486F2D|.6A 00         push 0x0
00486F2F|.68 D9000000   push 0xD9
00486F34|.68 05000080   push 0x80000005
00486F39|.6A 00         push 0x0
00486F3B|.68 31D54F00   push 防破解成.004FD531
00486F40|.68 04000000   push 0x4
00486F45|.BB 00004900   mov ebx,防破解成.00490000
00486F4A|.E8 91820000   call 防破解成.0048F1E0
00486F4F|.83C4 34       add esp,0x34
00486F52|.8945 E8       mov ,eax
00486F55|.8B45 E8       mov eax,
00486F58|.50            push eax
00486F59|.8B5D F4       mov ebx,
00486F5C|.85DB          test ebx,ebx
00486F5E|.74 09         je X防破解成.00486F69
00486F60|.53            push ebx
00486F61|.E8 62820000   call 防破解成.0048F1C8
00486F66|.83C4 04       add esp,0x4
00486F69|>58            pop eax
00486F6A|.8945 F4       mov ,eax
00486F6D|.68 05000080   push 0x80000005
00486F72|.6A 00         push 0x0
00486F74|.8B45 F8       mov eax,
00486F77|.85C0          test eax,eax
00486F79|.75 05         jnz X防破解成.00486F80
00486F7B|.B8 73D24F00   mov eax,防破解成.004FD273
00486F80|>50            push eax
00486F81|.68 01000000   push 0x1
00486F86|.BB 50F34800   mov ebx,防破解成.0048F350
00486F8B|.E8 50820000   call 防破解成.0048F1E0
00486F90|.83C4 10       add esp,0x10
00486F93|.68 01030080   push 0x80000301
00486F98|.6A 00         push 0x0
00486F9A|.50            push eax
00486F9B|.68 01000000   push 0x1
00486FA0|.BB F0F84800   mov ebx,防破解成.0048F8F0
00486FA5|.E8 36820000   call 防破解成.0048F1E0
00486FAA|.83C4 10       add esp,0x10
00486FAD|.68 01010080   push 0x80000101
00486FB2|.6A 00         push 0x0
00486FB4|.50            push eax
00486FB5|.68 01000000   push 0x1
00486FBA|.BB D0FD4800   mov ebx,防破解成.0048FDD0
00486FBF|.E8 1C820000   call 防破解成.0048F1E0
00486FC4|.83C4 10       add esp,0x10
00486FC7|.8945 E4       mov ,eax
00486FCA|.68 05000080   push 0x80000005
00486FCF|.6A 00         push 0x0
00486FD1|.8B45 E4       mov eax,
00486FD4|.85C0          test eax,eax
00486FD6|.75 05         jnz X防破解成.00486FDD
00486FD8|.B8 73D24F00   mov eax,防破解成.004FD273
00486FDD|>50            push eax
00486FDE|.68 01030080   push 0x80000301
00486FE3|.6A 00         push 0x0
00486FE5|.68 01000000   push 0x1
00486FEA|.68 01030080   push 0x80000301
00486FEF|.6A 00         push 0x0
00486FF1|.68 D8000000   push 0xD8
00486FF6|.68 05000080   push 0x80000005
00486FFB|.6A 00         push 0x0
00486FFD|.8B45 F4       mov eax,
00487000|.85C0          test eax,eax
00487002|.75 05         jnz X防破解成.00487009
00487004|.B8 73D24F00   mov eax,防破解成.004FD273
00487009|>50            push eax
0048700A|.68 04000000   push 0x4
0048700F|.BB 00004900   mov ebx,防破解成.00490000
00487014|.E8 C7810000   call 防破解成.0048F1E0
00487019|.83C4 34       add esp,0x34
0048701C|.8945 E0       mov ,eax
0048701F|.8B5D E4       mov ebx,
00487022|.85DB          test ebx,ebx
00487024|.74 09         je X防破解成.0048702F
00487026|.53            push ebx
00487027|.E8 9C810000   call 防破解成.0048F1C8
0048702C|.83C4 04       add esp,0x4
0048702F|>8B45 E0       mov eax,
00487032|.50            push eax
00487033|.8B5D F4       mov ebx,
00487036|.85DB          test ebx,ebx
00487038|.74 09         je X防破解成.00487043
0048703A|.53            push ebx
0048703B|.E8 88810000   call 防破解成.0048F1C8
00487040|.83C4 04       add esp,0x4
00487043|>58            pop eax
00487044|.8945 F4       mov ,eax
00487047|.68 01000000   push 0x1
0048704C|.68 00000000   push 0x0
00487051|.E8 16010000   call 防破解成.0048716C
00487056|.8945 EC       mov ,eax
00487059|.8B45 EC       mov eax,
0048705C|.50            push eax
0048705D|.8B5D F0       mov ebx,
00487060|.85DB          test ebx,ebx
00487062|.74 09         je X防破解成.0048706D
00487064|.53            push ebx
00487065|.E8 5E810000   call 防破解成.0048F1C8
0048706A|.83C4 04       add esp,0x4
0048706D|>58            pop eax
0048706E|.8945 F0       mov ,eax
00487071|.B8 13D54F00   mov eax,防破解成.004FD513
00487076|.33C9          xor ecx,ecx
00487078|.85C0          test eax,eax
0048707A|.74 03         je X防破解成.0048707F
0048707C|.8B48 04       mov ecx,dword ptr ds:
0048707F|>51            push ecx
00487080|.83C0 08       add eax,0x8
00487083|.50            push eax
00487084|.8B45 F0       mov eax,
00487087|.33DB          xor ebx,ebx
00487089|.85C0          test eax,eax
0048708B|.74 03         je X防破解成.00487090
0048708D|.8B58 04       mov ebx,dword ptr ds:
00487090|>83C0 08       add eax,0x8
00487093|.50            push eax
00487094|.3BD9          cmp ebx,ecx
00487096|.B8 01000000   mov eax,0x1
0048709B|.75 0A         jnz X防破解成.004870A7
0048709D|.48            dec eax
0048709E|.85C9          test ecx,ecx
004870A0|.74 05         je X防破解成.004870A7
004870A2|.E8 9CFCFFFF   call 防破解成.00486D43
004870A7|>83C4 0C       add esp,0xC
004870AA|.85C0          test eax,eax
004870AC|.0F85 35000000 jnz 防破解成.004870E7
004870B2|.6A 00         push 0x0
004870B4|.6A 00         push 0x0
004870B6|.6A 00         push 0x0
004870B8|.68 01030080   push 0x80000301
004870BD|.6A 00         push 0x0
004870BF|.68 00000000   push 0x0
004870C4|.68 04000080   push 0x80000004
004870C9|.6A 00         push 0x0
004870CB|.68 39D74F00   push 防破解成.004FD739                     ;读取原来引导扇区失败!!
004870D0|.68 03000000   push 0x3
004870D5|.BB F0034900   mov ebx,防破解成.004903F0
004870DA|.E8 01810000   call 防破解成.0048F1E0
004870DF|.83C4 28       add esp,0x28
004870E2|.E9 4F000000   jmp 防破解成.00487136
004870E7|>68 01000000   push 0x1
004870EC|.68 02000000   push 0x2
004870F1|.8D45 F0       lea eax,
004870F4|.50            push eax
004870F5|.E8 ED020000   call 防破解成.004873E7
004870FA|.68 01000000   push 0x1
004870FF|.68 00000000   push 0x0
00487104|.8D45 F4       lea eax,
00487107|.50            push eax
00487108|.E8 DA020000   call 防破解成.004873E7
0048710D|>6A 00         push 0x0
0048710F|.6A 00         push 0x0
00487111|.6A 00         push 0x0
00487113|.68 01030080   push 0x80000301
00487118|.6A 00         push 0x0
0048711A|.68 02000000   push 0x2
0048711F|.68 02000000   push 0x2
00487124|.B8 06000000   mov eax,0x6
00487129|.BB F0984D00   mov ebx,防破解成.004D98F0
0048712E|.E8 B9800000   call 防破解成.0048F1EC
00487133|.83C4 1C       add esp,0x1C
00487136|>8B5D F8       mov ebx,
00487139|.85DB          test ebx,ebx
0048713B|.74 09         je X防破解成.00487146
0048713D|.53            push ebx
0048713E|.E8 85800000   call 防破解成.0048F1C8
00487143|.83C4 04       add esp,0x4
00487146|>8B5D F4       mov ebx,
00487149|.85DB          test ebx,ebx
0048714B|.74 09         je X防破解成.00487156
0048714D|.53            push ebx
0048714E|.E8 75800000   call 防破解成.0048F1C8
00487153|.83C4 04       add esp,0x4
00487156|>8B5D F0       mov ebx,
00487159|.85DB          test ebx,ebx
0048715B|.74 09         je X防破解成.00487166
0048715D|.53            push ebx
0048715E|.E8 65800000   call 防破解成.0048F1C8
00487163|.83C4 04       add esp,0x4
00487166|>8BE5          mov esp,ebp
00487168|.5D            pop ebp
00487169\.C2 0400       retn 0x4



    实现的功能大概是,先 判断参数1是否为空,然后进行易语言的字节集替换,大概是在修改锁的一些地方,然后把原来的MBR读取到内存,然后,
写的 逻辑2扇区,然后把锁写到MBR,最后退出。

锁的代码大家可以用WinHex提取出来,然后用IDA研究一下把。
最后, 锁的密码是: bukudie00369









vipcrack 发表于 2014-5-20 22:06

感谢分型。
说实在的这个作者用逻辑锁,纯粹找死,看来是比较年轻不知道当年江民杀毒软件的逻辑锁带来的后果,惹大了,要负刑事责任的。

1940801011 发表于 2014-5-20 21:54

膜拜楼主   不解释   我那天在精易就是手贱扔OD了   然后    杯具了输入密码也没用重新分区了

羅少 发表于 2014-5-20 21:35

膜拜楼主!!!

专卖小七 发表于 2014-5-20 21:39

略屌略屌

sxsy 发表于 2014-5-20 21:41

很好,很强大..真的

osk45 发表于 2014-5-20 21:44

my1229 发表于 2014-5-20 21:55

支持楼主的详细分析!

永远以后 发表于 2014-5-20 22:03

楼主加个好友呗,膜拜了~~~!

Godfather.Cr 发表于 2014-5-20 22:06

膜拜!
单看这介绍都吓住了。。压根不敢试{:301_1004:}
页: [1] 2
查看完整版本: sqlbk 的 反调试易语言模块 2.0 破解