blackboyswe 发表于 2012-9-1 11:48

GIFMovieGear4.2破解全过程。软件很简单,牛牛莫笑。

本帖最后由 blackboyswe 于 2012-9-1 13:53 编辑

   破解软件:
   GIF Movie Gear 是一款实用的 GIF 文件制作、编辑、优化、转换软件。您可以用它打开 BMP/GIF/JPG/PNG/PSD/AVI/CUR/ICO 等格式并将它们转换或混合为 GIF 格式,并保存为 BMP/GIF/JPG/PNG/PSD/AVI/CUR/ICO 甚至 SWF 格式。您还可以用它剪切、缩放、旋转导入的图像文件,调整帧的顺序和延迟时间,更改循环次数,并用多种方法对其进行优化,以减小文件体积。此外,GIF Movie Gear 还能调用任意应用程序对帧进行实时编辑,为 GIF 文件添加注释以及输出 HTML 代码方便您在网页中调用图像。
   这个软件是PECompact 2.x的壳   @mycsy发过脱壳教程http://www.52pojie.cn/forum.php?mod=viewthread&tid=49406 ,当然也可以直接万能脱壳机脱掉 {:1_907:}。。。
软件地址:http://dl.vmall.com/c0eiqmnih8   注册表位置 : HKEY_LOCAL_MACHINE\SOFTWARE\gamani\GIFMovieGear\2.0
直接破解过程上:
OD打开,f9运行,点开注册框假注册,对话框提示不正确

直接堆栈f12    alt+k,

进入调用。
停在77D5082A系统领空, 我们在下面77D5082F下f2断点,再运行 停住,之后 f8就到了程序领空 00411733 ,

我们看到上面的0041172D      FF15 C0F44700 call dword ptr ds:[<&user32.#477>]       ; 就是弹出不能注册的。
不过这个是调用系统函数,不改。我们往上看到这些代码:

004116B0/$8B4424 04   mov eax,dword ptr ss:
004116B4|.8B0D C4C24A00 mov ecx,dword ptr ds:          ;Unpack_.00400000
004116BA|.68 00020000   push 0x200                               ; /Count = 200 (512.)
004116BF|.68 80BF4A00   push Unpack_.004ABF80                  ; |您提供的信息无效。请确认您输入的信息与我们提供给您的完全相同。
004116C4|.50            push eax                                 ; |RsrcID
004116C5|.51            push ecx                                 ; |hInst => 00400000
004116C6|.FF15 BCF44700 call dword ptr ds:[<&user32.#457>]       ; \LoadStringA
004116CC|.85C0          test eax,eax
004116CE|.74 0D         je XUnpack_.004116DD
004116D0|.3D 00020000   cmp eax,0x200
004116D5|.7D 06         jge XUnpack_.004116DD
004116D7      B8 80BF4A00   mov eax,Unpack_.004ABF80               ;您提供的信息无效。请确认您输入的信息与我们提供给您的完全相同。
004116DC|.C3            retn
(其实这些代码都不是破解关键,因为这个程序从一开始就检测这段代码,一直在运行这段代码,改了其他有些东西就乱了,我摸出来的。。。所以我们不要在这段代码纠结了,直接看看哪些地方调用这段代码了,要注册成功肯定得call这段代码。)所以:在子函数第一行004116E0   ctrl+j 查看调用地址。

里面地址从下往上试,找到00433D12 是注册时候调用的。
00433D02   .C2 1000       retn 0x10
00433D05   >6A 30         push 0x30
00433D07   .68 159D0000   push 0x9D15
00433D0C   .68 149D0000   push 0x9D14
00433D11   .57            push edi
00433D12   .E8 C9D9FDFF   call Unpack_.004116E0




我们找到跳到00433D05 的地方为00433C49 ,

00433C2D   .FFD6          call esi                                 ; |\GetDlgItem
00433C2F   .50            push eax                                 ; |hWnd
00433C30   .FFD3          call ebx                                 ; \GetWindowTextA
00433C32   .8D8C24 C40000>lea ecx,dword ptr ss:
00433C39   .51            push ecx
00433C3A   .8D5424 64   lea edx,dword ptr ss:
00433C3E   .52            push edx                                 ;上面函数就是取注册 id 跟 密码的,可以跳过
00433C3F   .E8 FCFBFFFF   call Unpack_.00433840                  ;这个看看 应该关键call
00433C44   .83C4 08       add esp,0x8
00433C47   .85C0          test eax,eax                           ;判断之后 写入注册表
00433C49      0F84 B6000000 je Unpack_.00433D05                      ;不跳就好,eax得不为0
00433C4F   .8D4424 10   lea eax,dword ptr ss:
00433C53   .50            push eax                                 ; /pDisposition
00433C54   .8D4C24 10   lea ecx,dword ptr ss:          ; |
00433C58   .51            push ecx                                 ; |pHandle
00433C59   .6A 00         push 0x0                                 ; |pSecurity = NULL
00433C5B   .68 3F000F00   push 0xF003F                           ; |Access = KEY_ALL_ACCESS
00433C60   .6A 00         push 0x0                                 ; |Options = REG_OPTION_NON_VOLATILE
00433C62   .68 85F64700   push Unpack_.0047F685                  ; |Class = ""
00433C67   .6A 00         push 0x0                                 ; |Reserved = 0
00433C69   .68 84E44800   push Unpack_.0048E484                  ; |Software\gamani\GIFMovieGear\2.0
00433C6E   .68 02000080   push 0x80000002                        ; |hKey = HKEY_LOCAL_MACHINE
00433C73   .FF15 0CF04700 call dword ptr ds:[<&advapi32.#464>]   ; \RegCreateKeyExA
00433C79   .8D4424 60   lea eax,dword ptr ss:
00433C7D   .8D50 01       lea edx,dword ptr ds:
00433C80   >8A08          mov cl,byte ptr ds:               ;取注册id
00433C82   .40            inc eax
00433C83   .84C9          test cl,cl
00433C85   .^ 75 F9         jnz XUnpack_.00433C80                  ;下面写注册id进注册表
00433C87   .8B35 00F04700 mov esi,dword ptr ds:[<&advapi32.#509>];advapi32.RegSetValueExA
00433C8D   .2BC2          sub eax,edx

分析就可知道 00433C3F 就是关键,从00433C3F出来后eax得不为0才会注册,如果简单nop掉 00433C49      0F84 B6000000 je Unpack_.00433D05就只能写入注册表,还是未注册的。所以我们得把出来时eax值改掉不为0.
我们跟进 00433C3F   .E8 FCFBFFFF   call Unpack_.00433840直接f8到

下面就是retn了。我们不能让eax=0,这个call可以改变命运,果断跟进。f8一直单步,过程有些循环,耐心走,当然这时候得时刻注意eax的值。
到这边就得小心了,

马上要retn了!可以看到现在eax值是最大的ffffffff,
到这里关键来了,

004336B8      33C0          xor eax,eax,这边是xor给eax清零!!!
一种方法把上面jne改为je,让跳转不实现;另一种方法把这边的xor改为or,修改好了复制保存。完美爆破。

第一次写破文。有点小激动,写的比较乱。大家别笑呀。{:17_1060:}




Chief 发表于 2012-9-1 12:00

鼓励发布破文,文章稍微有点乱,
可以借鉴别人的,看下是如何排的那么整齐。

blackboyswe 发表于 2012-9-1 12:02

Chief 发表于 2012-9-1 12:00 static/image/common/back.gif
鼓励发布破文,文章稍微有点乱,
可以借鉴别人的,看下是如何排的那么整齐。

恩恩。。。谢谢chief大~

14752700 发表于 2012-9-2 08:45

学习了。

yzwyb 发表于 2012-9-2 09:10

支持一下原创的东西

sheepccoco 发表于 2013-6-8 09:55

学习 ,学习 ,再学习 。


页: [1]
查看完整版本: GIFMovieGear4.2破解全过程。软件很简单,牛牛莫笑。