usbKiller 注册算法纯技术分析

oy2010-08-15技术研究1405

 本文只做技术学习研究参考使用~

 PEID检查无壳,Borland Delphi 6.0 - 7.0,OD载入,F9运行,注册,输入假码:0123456789,确定,弹错误信息,F12暂停,显示调用
  
  调用堆栈 ,项目 14
   地址=0012F93C 堆栈=004937E7 函数例程 / 参数=? <jmp.&user32.MessageBoxA> 调用来自=USBKille.004937E2 //左键双击或Enter键跟随
  
  004937E2  |.  E8 714CF7FF   call <jmp.&user32.MessageBoxA>           ; \MessageBoxA    ;来到这里
  004937E7  |.  8945 F8       mov [local.2],eax
  004937EA  |.  33C0          xor eax,eax
  004937EC  |.  5A            pop edx
  
  向上查看,找到段首F2下断:
  
  004936FC   /$  55            push ebp            ;F2下断
  004936FD   |.  8BEC          mov ebp,esp
  004936FF   |.  83C4 AC       add esp,-54
  00493702   |.  53            push ebx
  00493703   |.  56            push esi
  
  F9运行,再次点击注册,断在 004936FC   /$  55            push ebp 这里,F2取消断点,看堆栈窗口
  
  0012F968   004DE79B  返回到 USBKille.004DE79B 来自 USBKille.004DE460   ;在这里右键“在反汇编窗口中跟随”
  
  来到这里:
  
  004DE79B   |.  33C0          xor eax,eax
  
  向上查看,找到段首F2下断:
  
  004DE76C   /$  55            push ebp            ;F2下断
  004DE76D   |.  8BEC          mov ebp,esp
  004DE76F   |.  6A 00         push 0
  
  F9运行,再次点击注册,断在 004DE76C   /$  55            push ebp 这里,F2取消断点,看堆栈窗口
  
  0012F988   004DE6E6  返回到 USBKille.004DE6E6 来自 USBKille.004DE76C   ;在这里右键“在反汇编窗口中跟随”
  
  来到这里:
  
  004DE6E6   |.  8B45 F0       mov eax,[local.4]
  
  向上查看,找到段首F2下断:
  
  004DE6A4   /$  55            push ebp           ;F2下断
  004DE6A5   |.  8BEC          mov ebp,esp
  004DE6A7   |.  33C9          xor ecx,ecx
  004DE6A9   |.  51            push ecx
  004DE6AA   |.  51            push ecx
  004DE6AB   |.  51            push ecx
  
  F9运行,再次点击注册,断在 004DE6A4   /$  55            push ebp  这里,F2取消断点,看堆栈窗口
  
  0012F9C4   0056930E  返回到 USBKille.0056930E 来自 USBKille.004DE6A4   ;在这里右键“在反汇编窗口中跟随”
  
  来到这里:
  
  0056930E   |.  84C0          test al,al
  
  向上查看,这里就是按钮事件代码了,找到段首,F2下断,F9运行,再次点击注册,断在 005692AF  |.  53            push ebx
  
  F8单步

  1. 005692A0 /. 55 push ebp
        

  2. 005692A1 |. 8BEC mov ebp,esp
        

  3. 005692A3 |. B9 05000000 mov ecx,5
        

  4. 005692A8 |> 6A 00 /push 0
        

  5. 005692AA |. 6A 00 |push 0
        

  6. 005692AC |. 49 |dec ecx
        

  7. 005692AD |.^ 75 F9 \jnz short USBKille.005692A8
        

  8. 005692AF |. 53 push ebx ;上面有个小循环,为节省分析时间,在这里F2下断
        

  9. 005692B0 |. 8BD8 mov ebx,eax
        

  10. 005692B2 |. 33C0 xor eax,eax
        

  11. 005692B4 |. 55 push ebp
        

  12. 005692B5 |. 68 13945600 push USBKille.00569413
        

  13. 005692BA |. 64:FF30 push dword ptr fs:[eax]
        

  14. 005692BD |. 64:8920 mov dword ptr fs:[eax],esp
        

  15. 005692C0 |. 8D55 F8 lea edx,[local.2]
        

  16. 005692C3 |. 8B83 10030000 mov eax,dword ptr ds:[ebx+310]
        

  17. 005692C9 |. E8 728CF0FF call USBKille.00471F40 ; 取机器码
        

  18. 005692CE |. 8B45 F8 mov eax,[local.2]
        

  19. 005692D1 |. 8D55 FC lea edx,[local.1]
        

  20. 005692D4 |. E8 BF09EAFF call USBKille.00409C98
        

  21. 005692D9 |. 8B55 FC mov edx,[local.1]
        

  22. 005692DC |. 8B83 2C030000 mov eax,dword ptr ds:[ebx+32C]
        

  23. 005692E2 |. E8 BD58F7FF call USBKille.004DEBA4
        

  24. 005692E7 |. 8D55 F0 lea edx,[local.4]
        

  25. 005692EA |. 8B83 14030000 mov eax,dword ptr ds:[ebx+314]
        

  26. 005692F0 |. E8 4B8CF0FF call USBKille.00471F40 ; 取注册码
        

  27. 005692F5 |. 8B45 F0 mov eax,[local.4]
        

  28. 005692F8 |. 8D55 F4 lea edx,[local.3]
        

  29. 005692FB |. E8 9809EAFF call USBKille.00409C98
        

  30. 00569300 |. 8B55 F4 mov edx,[local.3]
        

  31. 00569303 |. 8B83 2C030000 mov eax,dword ptr ds:[ebx+32C]
        

  32. 00569309 |. E8 9653F7FF call USBKille.004DE6A4 ; 关键CALL,调用算法 F7进入
        

  33. 0056930E |. 84C0 test al,al
        

  34. 00569310 |. 75 72 jnz short USBKille.00569384 ; 关键跳
        

  35. 00569312 |. 68 40010000 push 140
        

  36. 00569317 |. 8D55 EC lea edx,[local.5]
        


  37.     

  38. F7进入后:
        


  39.     

  40. 004DE6A4 /$ 55 push ebp
        

  41. 004DE6A5 |. 8BEC mov ebp,esp
        

  42. 004DE6A7 |. 33C9 xor ecx,ecx
        

  43. 004DE6A9 |. 51 push ecx
        

  44. 004DE6AA |. 51 push ecx
        

  45. 004DE6AB |. 51 push ecx
        

  46. 004DE6AC |. 51 push ecx
        

  47. 004DE6AD |. 51 push ecx
        

  48. 004DE6AE |. 51 push ecx
        

  49. 004DE6AF |. 51 push ecx
        

  50. 004DE6B0 |. 51 push ecx
        

  51. 004DE6B1 |. 53 push ebx
        

  52. 004DE6B2 |. 8955 FC mov [local.1],edx
        

  53. 004DE6B5 |. 8BD8 mov ebx,eax
        

  54. 004DE6B7 |. 8B45 FC mov eax,[local.1]
        

  55. 004DE6BA |. E8 896DF2FF call USBKille.00405448
        

  56. 004DE6BF |. 33C0 xor eax,eax
        

  57. 004DE6C1 |. 55 push ebp
        

  58. 004DE6C2 |. 68 5DE74D00 push USBKille.004DE75D
        

  59. 004DE6C7 |. 64:FF30 push dword ptr fs:[eax]
        

  60. 004DE6CA |. 64:8920 mov dword ptr fs:[eax],esp
        

  61. 004DE6CD |. 8D55 F8 lea edx,[local.2]
        

  62. 004DE6D0 |. 8B45 FC mov eax,[local.1]
        

  63. 004DE6D3 |. E8 28B3F2FF call USBKille.00409A00
        

  64. 004DE6D8 |. 8B45 F8 mov eax,[local.2]
        

  65. 004DE6DB |. 50 push eax
        

  66. 004DE6DC |. 8D55 F0 lea edx,[local.4]
        

  67. 004DE6DF |. 8BC3 mov eax,ebx
        

  68. 004DE6E1 |. E8 86000000 call USBKille.004DE76C ; 算法调用 F7进入
        

  69. 004DE6E6 |. 8B45 F0 mov eax,[local.4]
        

  70. 004DE6E9 |. 8D55 F4 lea edx,[local.3]
        


  71.     

  72. F7进入后:
        


  73.     

  74. 004DE76C /$ 55 push ebp
        

  75. 004DE76D |. 8BEC mov ebp,esp
        

  76. 004DE76F |. 6A 00 push 0
        

  77. 004DE771 |. 53 push ebx
        

  78. 004DE772 |. 56 push esi
        

  79. 004DE773 |. 8BF2 mov esi,edx
        

  80. 004DE775 |. 8BD8 mov ebx,eax
        

  81. 004DE777 |. 33C0 xor eax,eax
        

  82. 004DE779 |. 55 push ebp
        

  83. 004DE77A |. 68 B1E74D00 push USBKille.004DE7B1
        

  84. 004DE77F |. 64:FF30 push dword ptr fs:[eax]
        

  85. 004DE782 |. 64:8920 mov dword ptr fs:[eax],esp
        

  86. 004DE785 |. 8D55 FC lea edx,[local.1]
        

  87. 004DE788 |. 8BC3 mov eax,ebx
        

  88. 004DE78A |. E8 31000000 call USBKille.004DE7C0
        

  89. 004DE78F |. 8B55 FC mov edx,[local.1]
        

  90. 004DE792 |. 8BCE mov ecx,esi
        

  91. 004DE794 |. 8BC3 mov eax,ebx
        

  92. 004DE796 |. E8 C5FCFFFF call USBKille.004DE460 ; 算法调用 F7进入
        

  93. 004DE79B |. 33C0 xor eax,eax
        

  94. 004DE79D |. 5A pop edx
        


  95.     


  96.     

  97. F7进入后,下面这段才是真正的算法,红色部分是算法的重点运算部分,
        


  98.     

  99. 004DE460 /$ 55 push ebp
        

  100. 004DE461 |. 8BEC mov ebp,esp
        

  101. 004DE463 |. 83C4 F0 add esp,-10
        

  102. 004DE466 |. 53 push ebx
        

  103. 004DE467 |. 56 push esi
        

  104. 004DE468 |. 57 push edi
        

  105. 004DE469 |. 33DB xor ebx,ebx
        

  106. 004DE46B |. 895D F0 mov [local.4],ebx
        

  107. 004DE46E |. 895D F4 mov [local.3],ebx
        

  108. 004DE471 |. 894D F8 mov [local.2],ecx
        

  109. 004DE474 |. 8955 FC mov [local.1],edx
        

  110. 004DE477 |. 8B45 FC mov eax,[local.1]
        

  111. 004DE47A |. E8 C96FF2FF call USBKille.00405448
        

  112. 004DE47F |. 33C0 xor eax,eax
        

  113. 004DE481 |. 55 push ebp
        

  114. 004DE482 |. 68 2DE54D00 push USBKille.004DE52D
        

  115. 004DE487 |. 64:FF30 push dword ptr fs:[eax]
        

  116. 004DE48A |. 64:8920 mov dword ptr fs:[eax],esp
        

  117. 004DE48D |. 8D45 F4 lea eax,[local.3]
        

  118. 004DE490 |. E8 036BF2FF call USBKille.00404F98
        

  119. 004DE495 |. 8B45 FC mov eax,[local.1]
        

  120. 004DE498 |. E8 BB6DF2FF call USBKille.00405258
        

  121. 004DE49D |. 8BF8 mov edi,eax
        

  122. 004DE49F |. 85FF test edi,edi
        

  123. 004DE4A1 |. 7E 5C jle short USBKille.004DE4FF
        

  124. 004DE4A3 |. BB 01000000 mov ebx,1
        

  125. 004DE4A8 |> 8D43 1E /lea eax,dword ptr ds:[ebx+1E]
        

  126. 004DE4AB |. 50 |push eax
        

  127. 004DE4AC |. 8BC3 |mov eax,ebx
        

  128. 004DE4AE |. 5A |pop edx
        

  129. 004DE4AF |. 8BCA |mov ecx,edx
        

  130. 004DE4B1 |. 99 |cdq
        

  131. 004DE4B2 |. F7F9 |idiv ecx
        

  132. 004DE4B4 |. 8BF2 |mov esi,edx
        

  133. 004DE4B6 |. 8D43 14 |lea eax,dword ptr ds:[ebx+14]
        

  134. 004DE4B9 |. 50 |push eax
        

  135. 004DE4BA |. 8BC3 |mov eax,ebx
        

  136. 004DE4BC |. 5A |pop edx
        

  137. 004DE4BD |. 8BCA |mov ecx,edx
        

  138. 004DE4BF |. 99 |cdq
        

  139. 004DE4C0 |. F7F9 |idiv ecx
        

  140. 004DE4C2 |. 03F2 |add esi,edx
        

  141. 004DE4C4 |. 8B45 FC |mov eax,[local.1]
        

  142. 004DE4C7 |. 0FB64418 FF |movzx eax,byte ptr ds:[eax+ebx-1]
        

  143. 004DE4CC |. 03C6 |add eax,esi
        

  144. 004DE4CE |. 83C0 D0 |add eax,-30
        

  145. 004DE4D1 |. 83E8 0A |sub eax,0A
        

  146. 004DE4D4 |. 72 08 |jb short USBKille.004DE4DE
        

  147. 004DE4D6 |. 83C0 F9 |add eax,-7
        

  148. 004DE4D9 |. 83E8 1A |sub eax,1A
        

  149. 004DE4DC |. 73 1D |jnb short USBKille.004DE4FB
        

  150. 004DE4DE |> 8D45 F0 |lea eax,[local.4]
        

  151. 004DE4E1 |. 8B55 FC |mov edx,[local.1]
        

  152. 004DE4E4 |. 0FB6541A FF |movzx edx,byte ptr ds:[edx+ebx-1]
        

  153. 004DE4E9 |. 03D6 |add edx,esi
        

  154. 004DE4EB |. E8 906CF2FF |call USBKille.00405180
        

  155. 004DE4F0 |. 8B55 F0 |mov edx,[local.4]
        

  156. 004DE4F3 |. 8D45 F4 |lea eax,[local.3]
        

  157. 004DE4F6 |. E8 656DF2FF |call USBKille.00405260
        

  158. 004DE4FB |> 43 |inc ebx
        

  159. 004DE4FC |. 4F |dec edi
        

  160. 004DE4FD |.^ 75 A9 \jnz short USBKille.004DE4A8
        

  161. 004DE4FF |> 8B45 F8 mov eax,[local.2]
        

  162. 004DE502 |. 8B55 F4 mov edx,[local.3]
        

  163. 004DE505 |. E8 E26AF2FF call USBKille.00404FEC
        

  164. 004DE50A |. 33C0 xor eax,eax
        

  165. 004DE50C |. 5A pop edx
        

  166. 004DE50D |. 59 pop ecx
        

  167. 004DE50E |. 59 pop ecx
        

  168. 004DE50F |. 64:8910 mov dword ptr fs:[eax],edx
        

  169. 004DE512 |. 68 34E54D00 push USBKille.004DE534
        

  170. 004DE517 |> 8D45 F0 lea eax,[local.4]
        

  171. 004DE51A |. BA 02000000 mov edx,2
        

  172. 004DE51F |. E8 986AF2FF call USBKille.00404FBC
        

  173. 004DE524 |. 8D45 FC lea eax,[local.1]
        

  174. 004DE527 |. E8 6C6AF2FF call USBKille.00404F98
        

  175. 004DE52C \. C3 retn


  算法的简单描述:
  
  1、ASCII(逐位取机器码)+2*位数(拿我的机器码为例:E3B5D073A16293,第1位为E,则 asc("E")+2*1,第2位则为 asc("3")+2*2
  2、检查 Chr(ASCII(逐位取机器码)+2*位数) 是否为数字或大写字母,如果是则保留这一个字符作为1位注册码,如果不是,就忽略,计算下一位,直到所有机器码取完
  
  
  注册码保存在:
  
  C:\Documents and Settings\All Users\Application Data\USBSecurity\svighost.dll

  http://hi.baidu.com/null%5Fvbt/blog

 


  
  VB Code:

 

 

 

评论列表

ll5358qq
ll5358qq
2011-04-15

能不能给我个注册机啊 邮箱是 mmzhzyh@163.com

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。