应该是最新的吧,机器码是40位的 1. 00416EDB |> /0FBE39 |/movsx edi, byte ptr [ecx] ; 前20位算法 2. 00416EDE |. |8BC7 ||mov eax, edi 3. 00416EE0 |. |BF 09000000 ||mov edi, 9 4. 00416EE5 |. |33C3 ||xor eax, ebx 5. 00416EE7 |. |43 ||inc ebx 6. 00416EE8 |. |99 ||cdq 7. 00416EE9 |. |F7FF ||idiv edi 8. 00416EEB |. |8BC2 ||mov eax, edx ; (Initial CPU selection) 9. 00416EED |. |8B55 B4 ||mov edx, dword ptr [ebp-4C] 10. 00416EF0 |. |83C0 30 ||add eax, 30 11. 00416EF3 |. |8802 ||mov byte ptr [edx], al 12. 00416EF5 |. |8801 ||mov byte ptr [ecx], al 13. 00416EF7 |. |8B45 0C ||mov eax, dword ptr [ebp+C] 14. 00416EFA |. |41 ||inc ecx 15. 00416EFB |. |C780 C4180000>||mov dword ptr [eax+18C4], 64 16. 00416F05 |. |8345 B4 03 ||add dword ptr [ebp-4C], 3 17. 00416F09 |. |83FB 14 ||cmp ebx, 14 18. 00416F0C |.^\7C CD |\jl short 00416EDB 复制代码 这个是通过硬盘序列号来计算出来的 本帖隐藏的内容 注意这两句 1. 00416EF3 |. |8802 ||mov byte ptr [edx], al 2. 00416EF5 |. |8801 ||mov byte ptr [ecx], al 复制代码 修改对应地方的数据 1. 00404CDC |. 8B55 D4 mov edx, dword ptr [ebp-2C] 2. 00404CDF |. 52 push edx 3. 00404CE0 |. 8D8D D4FEFFFF lea ecx, dword ptr [ebp-12C] 4. 00404CE6 |. 51 push ecx 5. 00404CE7 |. E8 58E30200 call 00433044 ; 20-30位 6. 00404CEC |. 66:C745 E8 08>mov word ptr [ebp-18], 8 7. 00404CF2 |. 83C4 08 add esp, 8 8. 00404CF5 |. 8D95 D4FEFFFF lea edx, dword ptr [ebp-12C] 9. 00404CFB |. 8D45 FC lea eax, dword ptr [ebp-4] 复制代码 其中中间有个,分三段计算出来 XXX XXXX XXXX,所以这里要循环3次,如下代码 1. 00497D01 |. 50 |push eax 2. 00497D02 |. 51 |push ecx 3. 00497D03 |. 8B55 C8 |mov edx, dword ptr [ebp-38] 4. 00497D06 |. 52 |push edx 5. 00497D07 |. 8B4D E8 |mov ecx, dword ptr [ebp-18] 6. 00497D0A |. 51 |push ecx 7. 00497D0B |. FF75 DC |push dword ptr [ebp-24] 8. 00497D0E |. FF75 D8 |push dword ptr [ebp-28] 9. 00497D11 |. E8 7A310000 |call 0049AE90 ; 重点,这里每次出现一次看寄存器进行修改 10. 00497D16 |. 83C4 18 |add esp, 18 ; 修改EAX里面的值 11. 00497D19 |> 837D F8 00 |cmp dword ptr [ebp-8], 0 12. 00497D1D |. 0F8C 19020000 |jl 00497F3C 13. 00497D23 |. 8B55 E8 |mov edx, dword ptr [ebp-18] 复制代码 接着换第31位机器码 1. 00404F0A > /0FBE08 movsx ecx, byte ptr [eax] ; 换31位 2. 00404F0D . |0FBE70 0A movsx esi, byte ptr [eax+A] 3. 00404F11 . |03CE add ecx, esi 4. 00404F13 . |D1F9 sar ecx, 1 5. 00404F15 . |79 03 jns short 00404F1A 6. 00404F17 . |83D1 00 adc ecx, 0 7. 00404F1A > |8808 mov byte ptr [eax], cl ;注意CL的值,跟踪EAX进行修改 8. 00404F1C . |42 inc edx 9. 00404F1D . |40 inc eax 10. 00404F1E > |8D4B F6 lea ecx, dword ptr [ebx-A] 11. 00404F21 . |3BD1 cmp edx, ecx 12. 00404F23 .^\7C E5 jl short 00404F0A 复制代码 接着修改第11-14位机器码 1. 004176E7 |> /0FBE01 movsx eax, byte ptr [ecx] 2. 004176EA |. |BE 0A000000 mov esi, 0A 3. 004176EF |. |33D2 xor edx, edx 4. 004176F1 |. |F7F6 div esi 5. 004176F3 |. |80C2 30 add dl, 30 6. 004176F6 |. |43 inc ebx 7. 004176F7 |. |8811 mov byte ptr [ecx], dl ;注意DL的值,直接跟踪ECX进行修改 8. 004176F9 |. |41 inc ecx 9. 004176FA |. |83FB 04 cmp ebx, 4 10. 004176FD |.^\7C E8 jl short 004176E7 复制代码 然后生成第31-34为机器码 1. 00417797 |> /0FBE03 movsx eax, byte ptr [ebx] ; 31-34位 2. 0041779A |. |BE 0A000000 mov esi, 0A 3. 0041779F |. |33D2 xor edx, edx 4. 004177A1 |. |F7F6 div esi 5. 004177A3 |. |80C2 30 add dl, 30 6. 004177A6 |. |41 inc ecx 7. 004177A7 |. |8813 mov byte ptr [ebx], dl ; 注意EBX和DL 8. 004177A9 |. |43 inc ebx 9. 004177AA |. |83F9 04 cmp ecx, 4 10. 004177AD |.^\7C E8 jl short 00417797 复制代码 生成第35位机器码 1. 00417899 |> \8BC6 mov eax, esi ; 35位 DL 2. 0041789B BB 0A000000 mov ebx, 0A 3. 004178A0 |. 99 cdq 4. 004178A1 F7FB idiv ebx 5. 004178A3 80C2 30 add dl, 30 ; 注意DL 6. 004178A6 |. 8D45 FC lea eax, dword ptr [ebp-4] 7. 004178A9 |. 88940D 74FFFF>mov byte ptr [ebp+ecx-8C], dl 复制代码 生成第36-38位机器码,感觉36位一直是0 1. 00417A0C |. B8 C89C4B00 mov eax, 004B9CC8 ; 0 2. 00417A11 |. E8 CAA80800 call 004A22E0 3. 00417A16 |. 8D55 EC lea edx, dword ptr [ebp-14] 4. 00417A19 |. 8D45 FC lea eax, dword ptr [ebp-4] 5. 00417A1C |. E8 8BA40800 call 004A1EAC 6. 00417A21 |. FF4E 1C dec dword ptr [esi+1C] 7. 00417A24 |. 8D45 EC lea eax, dword ptr [ebp-14] 8. 00417A27 |. BA 02000000 mov edx, 2 9. 00417A2C |. E8 4BA40800 call 004A1E7C ; 36-38位 10. 00417A31 |> 33C0 xor eax, eax ; 寄存器出现机器码 复制代码 最后两位机器码 1. 00417A51 |. 8BD0 mov edx, eax 2. 00417A53 |. FF46 1C inc dword ptr [esi+1C] 3. 00417A56 |. 8D45 F8 lea eax, dword ptr [ebp-8] 4. 00417A59 |. E8 4EA40800 call 004A1EAC 5. 00417A5E |. FF4E 1C dec dword ptr [esi+1C] 6. 00417A61 |. 8D45 E8 lea eax, dword ptr [ebp-18] 7. 00417A64 |. BA 02000000 mov edx, 2 8. 00417A69 |. E8 0EA40800 call 004A1E7C ; 最后两位 9. 00417A6E |. 837D F8 00 cmp dword ptr [ebp-8], 0 ; 寄存器出现机器码 复制代码 ——————– 1. 00497D01 |. 50 |push eax 2. 00497D02 |. 51 |push ecx 3. 00497D03 |. 8B55 C8 |mov edx, dword ptr [ebp-38] 4. 00497D06 |. 52 |push edx 5. 00497D07 |. 8B4D E8 |mov ecx, dword ptr [ebp-18] 6. 00497D0A |. 51 |push ecx 7. 00497D0B |. FF75 DC |push dword ptr [ebp-24] 8. 00497D0E |. FF75 D8 |push dword ptr [ebp-28] 9. 00497D11 |. E8 7A310000 |call 0049AE90 ; 重点,这里每次出现一次看寄存器进行修改 10. 00497D16 |. 83C4 18 |add esp, 18 ; 修改EAX里面的值 11. 00497D19 |> 837D F8 00 |cmp dword ptr [ebp-8], 0 12. 00497D1D |. 0F8C 19020000 |jl 00497F3C 13. 00497D23 |. 8B55 E8 |mov edx, dword ptr [ebp-18] 复制代码 ———————– 顺便做了个小录像 http://www.brsbox.com/filebox/down/fc/d12e14f7fdb774ea7e11c7072ed032bc |