xujunlin5588 发表于 2009-5-16 19:18

i-sound破解+破解补丁的制作

本帖最后由 xujunlin5588 于 2009-5-16 20:11 编辑

首先先感谢天草老师。他教会了我很多关于破解的东西。
这次是我第一次发破文。不知道好不,请大家请教下。

软件:i-Sound Pro
壳:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo

OD载入:
0065BC40 >60            pushad                                 ; (initial cpu selection)
0065BC41    BE 00D05D00   mov   esi, 005DD000
0065BC46    8DBE 0040E2FF   lea   edi, dword ptr
0065BC4C    57            push    edi
0065BC4D    83CD FF         or      ebp, FFFFFFFF
0065BC50    EB 10         jmp   short 0065BC62
0065BC52    90            nop
0065BC53    90            nop
0065BC54    90            nop
0065BC55    90            nop
0065BC56    90            nop
0065BC57    90            nop
0065BC58    8A06            mov   al, byte ptr
0065BC5A    46            inc   esi
0065BC5B    8807            mov   byte ptr , al
0065BC5D    47            inc   edi
0065BC5E    01DB            add   ebx, ebx
0065BC60    75 07         jnz   short 0065BC69
0065BC62    8B1E            mov   ebx, dword ptr
0065BC64    83EE FC         sub   esi, -4
0065BC67    11DB            adc   ebx, ebx
0065BC69^ 72 ED         jb      short 0065BC58
0065BC6B    B8 01000000   mov   eax, 1
0065BC70    01DB            add   ebx, ebx
0065BC72    75 07         jnz   short 0065BC7B
0065BC74    8B1E            mov   ebx, dword ptr
0065BC76    83EE FC         sub   esi, -4
0065BC79    11DB            adc   ebx, ebx
0065BC7B    11C0            adc   eax, eax
0065BC7D    01DB            add   ebx, ebx
0065BC7F    73 0B         jnb   short 0065BC8C
0065BC81    75 19         jnz   short 0065BC9C
0065BC83    8B1E            mov   ebx, dword ptr
......
很明显是UPX壳的特征。
按照常规方法。先运行下。(注意:要先忽略除了内存的所有异常)
运行后,点了setting..就找到register..那里是unregister 。这个就是关键。所以在后面寻找字符串可以找这个。
暂停OD。找到“显示调用堆栈”。
找到 isound.0048BF18..显示调用。。
再找一下字符串。找到 registered version(这是个注册版本)进去观察下。

004D09C4    55            push    ebp
004D09C5    68 5C0E4D00   push    004D0E5C
004D09CA    64:FF30         push    dword ptr fs:
004D09CD    64:8920         mov   dword ptr fs:, esp
004D09D0    8B15 141D4E00   mov   edx, dword ptr           ; isound.00575244
004D09D6    8B52 0D         mov   edx, dword ptr
004D09D9    8B83 BC040000   mov   eax, dword ptr
004D09DF    E8 28A3F9FF   call    0046AD0C
004D09E4    8B15 141D4E00   mov   edx, dword ptr           ; isound.00575244
004D09EA    8B52 52         mov   edx, dword ptr
004D09ED    8B83 28030000   mov   eax, dword ptr
004D09F3    E8 14A3F9FF   call    0046AD0C
004D09F8    8B0D 141D4E00   mov   ecx, dword ptr           ; isound.00575244
004D09FE    8B49 11         mov   ecx, dword ptr
004D0A01    8B15 141D4E00   mov   edx, dword ptr           ; isound.00575244
004D0A07    8B52 0D         mov   edx, dword ptr
004D0A0A    A1 E01D4E00   mov   eax, dword ptr
004D0A0F    8B00            mov   eax, dword ptr
004D0A11    E8 16530000   call    004D5D2C
004D0A16    84C0            test    al, al                                  //控制jnz能否跳,破解关键!
004D0A18    75 12         jnz   short 004D0A2C                                                            //就是这个控制了我们不能注册成功!这个就是目标了。
004D0A1A    BA 740E4D00   mov   edx, 004D0E74                  ; this copy is unregistered
004D0A1F    8B83 E4040000   mov   eax, dword ptr
004D0A25    E8 E2A2F9FF   call    0046AD0C
004D0A2A    EB 6E         jmp   short 004D0A9A                                                          //这个跳就把register跳过了,那么就无法成功了,所以要让上面那个jnz跳实现。
004D0A2C    8B0D 141D4E00   mov   ecx, dword ptr           ; isound.00575244
004D0A32    8B49 0D         mov   ecx, dword ptr
004D0A35    8D85 98FEFFFF   lea   eax, dword ptr
004D0A3B    BA 980E4D00   mov   edx, 004D0E98                  ; registered to
004D0A40    E8 AB49F3FF   call    004053F0
004D0A45    8B95 98FEFFFF   mov   edx, dword ptr
004D0A4B    8B83 E4040000   mov   eax, dword ptr
004D0A51    E8 B6A2F9FF   call    0046AD0C
004D0A56    33D2            xor   edx, edx
004D0A58    8B83 AC040000   mov   eax, dword ptr
004D0A5E    E8 99A1F9FF   call    0046ABFC
004D0A63    33D2            xor   edx, edx
004D0A65    8B83 C4040000   mov   eax, dword ptr
004D0A6B    E8 8CA1F9FF   call    0046ABFC
004D0A70    33D2            xor   edx, edx
004D0A72    8B83 BC040000   mov   eax, dword ptr
004D0A78    8B08            mov   ecx, dword ptr
004D0A7A    FF51 64         call    dword ptr
004D0A7D    33D2            xor   edx, edx
004D0A7F    8B83 C0040000   mov   eax, dword ptr
004D0A85    8B08            mov   ecx, dword ptr
004D0A87    FF51 64         call    dword ptr
004D0A8A    BA B00E4D00   mov   edx, 004D0EB0                  ; registered version                     //这里就是关键了。
004D0A8F    8B83 C0040000   mov   eax, dword ptr
004D0A95    E8 72A2F9FF   call    0046AD0C
004D0A9A    8B15 141D4E00   mov   edx, dword ptr           ; isound.00575244
004D0AA0    8B52 2A         mov   edx, dword ptr
004D0AA3    8B83 DC030000   mov   eax, dword ptr
004D0AA9    E8 7ED9F7FF   call    0044E42C
004D0AAE    8B15 141D4E00   mov   edx, dword ptr           ; isound.00575244
004D0AB4    8B52 46         mov   edx, dword ptr
004D0AB7    8B83 24040000   mov   eax, dword ptr
004D0ABD    8B08            mov   ecx, dword ptr
004D0ABF    FF91 D0000000   call    dword ptr
004D0AC5    A1 141D4E00   mov   eax, dword ptr
004D0ACA    8378 42 02      cmp   dword ptr , 2
004D0ACE    75 12         jnz   short 004D0AE2
004D0AD0    33D2            xor   edx, edx
004D0AD2    8B83 08040000   mov   eax, dword ptr
004D0AD8    8B08            mov   ecx, dword ptr
004D0ADA    FF91 D0000000   call    dword ptr

找到了目标后,有些朋友会说直接jmp掉它不就行了么?的确。这个方法可以。但是你试过后会发觉:“在可执行文件中无法定位数据”。那么就要另辟新径了。
大家是否有发现,在jnz上面有一个test al, al?那么只有一个可能了,它肯定就是破解的关键。我们进去看下。
004D5D2C    55            push    ebp
004D5D2D    8BEC            mov   ebp, esp
004D5D2F    6A 00         push    0
004D5D31    6A 00         push    0
004D5D33    6A 00         push    0
004D5D35    6A 00         push    0
004D5D37    6A 00         push    0
004D5D39    53            push    ebx
004D5D3A    56            push    esi
004D5D3B    894D FC         mov   dword ptr , ecx
004D5D3E    8B45 FC         mov   eax, dword ptr
004D5D41    E8 4EF8F2FF   call    00405594
004D5D46    33C0            xor   eax, eax
004D5D48    55            push    ebp
004D5D49    68 CB5D4D00   push    004D5DCB
004D5D4E    64:FF30         push    dword ptr fs:
004D5D51    64:8920         mov   dword ptr fs:, esp
004D5D54    33DB            xor   ebx, ebx
004D5D56    B8 80E24800   mov   eax, 0048E280                  
004D5D5B    8945 F0         mov   dword ptr , eax
004D5D5E    8D45 F8         lea   eax, dword ptr
004D5D61    E8 6EF3F2FF   call    004050D4
004D5D66    8D4D F4         lea   ecx, dword ptr
004D5D69    8B55 FC         mov   edx, dword ptr
004D5D6C    B8 03010000   mov   eax, 103
004D5D71    E8 4A84FBFF   call    0048E1C0
004D5D76    33F6            xor   esi, esi
004D5D78    8D45 EC         lea   eax, dword ptr
004D5D7B    8BD6            mov   edx, esi
004D5D7D    C1E2 02         shl   edx, 2
004D5D80    8B4D F0         mov   ecx, dword ptr
004D5D83    8D14D1          lea   edx, dword ptr
004D5D86    B9 20000000   mov   ecx, 20
004D5D8B    E8 C4F5F2FF   call    00405354
004D5D90    8B45 EC         mov   eax, dword ptr
004D5D93    8B55 F4         mov   edx, dword ptr
004D5D96    E8 55F7F2FF   call    004054F0
004D5D9B    75 02         jnz   short 004D5D9F                                          //本身就跳,我们可以尝试下让它不跳。
004D5D9D    B3 01         mov   bl, 1
004D5D9F    46            inc   esi
004D5DA0    81FE 81030000   cmp   esi, 381
004D5DA6^ 75 D0         jnz   short 004D5D78
004D5DA8    33C0            xor   eax, eax
004D5DAA    5A            pop   edx
004D5DAB    59            pop   ecx
004D5DAC    59            pop   ecx
004D5DAD    64:8910         mov   dword ptr fs:, edx
004D5DB0    68 D25D4D00   push    004D5DD2
004D5DB5    8D45 EC         lea   eax, dword ptr
004D5DB8    E8 17F3F2FF   call    004050D4
004D5DBD    8D45 F4         lea   eax, dword ptr
004D5DC0    BA 03000000   mov   edx, 3
004D5DC5    E8 2EF3F2FF   call    004050F8
004D5DCA    C3            retn
004D5DCB^ E9 20ECF2FF   jmp   004049F0
004D5DD0^ EB E3         jmp   short 004D5DB5
004D5DD2    8BC3            mov   eax, ebx
004D5DD4    5E            pop   esi
004D5DD5    5B            pop   ebx
004D5DD6    8BE5            mov   esp, ebp
004D5DD8    5D            pop   ebp
004D5DD9    C3            retn
大家照常走下。你会发觉那走完后出去了,那个跳还是没办法实现。那么只有一种可能了,在上面   004D5D9B    75 02         jnz   short 004D5D9F
我们让它不跳。结果很明显。那个jnz实现了。把跳过register的jmp也过了。那么就能注册成功了!
事不宜迟,马上修改退出。。。呵呵。我们不是说还有做破解补丁么?慢慢来!
刚才已经知道了004D5D9B    75 02         jnz   short 004D5D9F就是破解的关键了,那么做补丁就要用到这条地址了。我们就把它nop掉吧。那么 75 02就会变成了9090了。
打开KEYmake.这个软件可能会报毒,所以能做补丁时大家可能要把杀毒软件给暂停掉,不信任的话就不做补丁了,直接爆破就行了!


打开了后,其他---制作内存补丁----
程序名称就是打开原程序就是了,消息标题你喜欢怎么打就怎么打,启动提示也是一样,关键是后面的。
添加后,要你输入“修改地址”那么你就输入刚才破解关键那个地址咯004D5D9B,修改长度假如你爱2个的话,下面原始指令就得输2个字节:就是7502,修改指令就为9090;假如你爱1个的话,原始为:75
修改为:90。然后生成。
再运行下,破解了吧!
喜欢直接爆破的可以在那个地方直接NOP掉,再保存文件就行了。

给大家发上软件吧+(注册机编写器)
http://www.namipan.com/d/i-Sound%20Pro.rar/04937c1f760f601c333dd8e97af7482fe24daf37a15e2000    (i-sound)
http://www.namipan.com/d/%E6%B3%A8%E5%86%8C%E6%9C%BA%E7%BC%96%E5%86%99%E5%99%A8.rar/38d60460c586a2d6845611abc1ef8e37c85df88170a10e00   (注册机编写器)

hao5688 发表于 2011-9-5 23:47

不错啊!学习了!

夜来香 发表于 2011-2-15 13:29

HEHE 来顶一下~!

sjg8 发表于 2011-2-10 10:23

你是没有脱壳直接做的补丁吗?

落雪飞花 发表于 2011-2-9 19:50

不错啊!学习了!
页: [1]
查看完整版本: i-sound破解+破解补丁的制作