obsidium v1.1.1.4 脱壳――jingulong兄的unpackit.exe | 宜武汇-ag真人国际厅网站

         

         

         

obsidium:  

软件大小:  1 mb

【软件简介】:the obsidium software protection and licensing system allows you to protect your program from unauthorized modifications (i.e. “cracking”) and provides you with a reliable yet easy to implement licensing system. 看雪工具栏介绍:“一款优秀的壳,它可以分块加密等。

【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

【调试环境】:winxp、ollydbg、peid、lordpe、importrec

―――――――――――――――――――――――――――――――――

【脱壳过程】:

                  

               

            

因为obsidium对程序代码重定位,使得脱壳有点烦人。壳把原程序的资源放在00002000,为了省点事不移动资源段,我学习了zilot大侠脱obsidium v1.0.0.61主程序的方法,最后补上了重定位后的代码段。当然,这样脱壳不算完美,只是能运行罢了。

jingulong兄可能是为了降低脱壳的难度,所以拿win98的记事本做了这个unpackit,使得脱壳稍微轻松点。obsidium v1.1.1.4主程序的脱壳比较麻烦,需要修复加密代码或者补上解密代码段。  

―――――――――――――――――――――――――――――――――

一、寻找oep、dump进程

         

           

老规矩:用isdebug 1.4插件去掉ollydbg的调试器标志。忽略除了“整数被0除”之外的所有其他异常选项。

        

 00407000 eb 02 jmp short unpackit.00407004//进入od后停在这 003a161b f7f0 div eax//第1次异常 003a4fa9 f7f0 div eax//第2次异常 003a5363 f7f0 div eax//第3次异常 003a54d9 f7f0 div eax//第4次异常 输入表处理 003a381d f7f0 div eax//第5次异常 003a3bd1 f7f0 div eax//第6次异常 003a381d f7f0 div eax//第7次异常 003a3bd1 f7f0 div eax//第8次异常 00408818 f7f0 div eax//第9次异常 跳oep 

ok,当第5次003a381d异常时,ctrl g:003a54d9  (第4次异常地址)

到达 003a3bd1 时 ctrl f 搜索命令:test word ptr ds:[esi],20

 003a64f0 66:f706 2000 test word ptr ds:[esi],20//找到这里 003a64f5 74 59 je short 003a6550 

呵呵,记下这个:003a64f0  ◆      这一步为下面的修复输入表提供点方便啦

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

看看00408818处第9次异常的堆栈:

0012ff4c    0012ffe0  指针到下一个 seh 记录

0012ff50    0040884c  se 句柄//此处下断

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 0040884c c8 000000 enter 0,0//此处下断,shift f9断在这 00408850 eb 02 jmp short unpackit.00408854 

ctrl f 在当前位置下搜索命令:mov dword ptr ds:[eax 0b8],edx  在004088d9处

 004088d9 8990 b8000000 mov dword ptr ds:[eax b8],edx//此处下断,f9断在这 edx=00408b78 004088df eb 03 jmp short unpackit.004088e4 

ctrl g:00408b78   下断,f9运行,断下

 00408b78 e8 b7000000 call unpackit.00408c34//f7进入 
 00408c34 f8 clc 00408c35 73 06 jnb short unpackit.00408c3d 00408c3d 60 pushad 00408c3e 836c24 20 05 sub dword ptr ss:[esp 20],5 00408c43 8b4c24 20 mov ecx,dword ptr ss:[esp 20] 00408c47 f9 stc 00408c48 72 02 jb short unpackit.00408c4c 00408c4c c601 fa mov byte ptr ds:[ecx],0fa 00408c4f eb 04 jmp short unpackit.00408c55 00408c55 c741 01 80baf580 mov dword ptr ds:[ecx 1],80f5ba80 00408c5c f8 clc 00408c5d 73 05 jnb short unpackit.00408c64 00408c64 bb bc000000 mov ebx,0bc 00408c69 f8 clc 00408c6a 73 01 jnb short unpackit.00408c6d 00408c6d b8 e8ed7c07 mov eax,77cede8 00408c72 c009 0f ror byte ptr ds:[ecx],0f 00408c75 c109 5f ror dword ptr ds:[ecx],5f 00408c78 f9 stc 00408c79 72 06 jb short unpackit.00408c81 00408c81 f8 clc 00408c82 73 03 jnb short unpackit.00408c87 00408c87 83c1 04 add ecx,4 00408c8a f8 clc 00408c8b 73 01 jnb short unpackit.00408c8e 00408c8e 81e8 8cb4a71a sub eax,1aa7b48c 00408c94 83eb 04 sub ebx,4 00408c97 0f85 d5ffffff jnz unpackit.00408c72 00408c9e 73 05 jnb short unpackit.00408ca5 00408ca5 61 popad 00408ca6 f9 stc 00408ca7 72 04 jb short unpackit.00408cad 00408cad c3 retn//返回00408b78 这段代码其实就是再次解码00408b78 00408b78 eb 01 jmp short unpackit.00408b7b 

再次来到00408b78处时,ctrl f 在 当前位置下 搜索命令: jmp edi  在00408c12处,当然是f2再下断了,f9会断在那里的

 00408c12 ffe7 jmp edi//跳至 003aac06 003aac06 e8 00000000 call 003aac0b 003aac0b eb 03 jmp short 003aac10 

f7向下走几步就行了

 003aac48 0356 10 add edx,dword ptr ds:[esi 10] //edx=000010d3 00a10000=00a110d3 由壳中返回程序的地址 伪oep值 ★ 003aac4b eb 03 jmp short 003aac50 003aac6b 61 popad 003aac6c eb 01 jmp short 003aac6f 003aac6f 9d popfd 003aac70 eb 02 jmp short 003aac74 003aac74 eb 02 jmp short 003aac78 003aac78 e9 56646600 jmp 00a110d3//飞向光明之巅! 

根据原记事本程序补上stolen code,呵呵,偷巧了。

脱其他obsidium壳程序可以根据程序运行代码、伪oep处的堆栈和寄存器等情况,还原oep处代码。

 00a110cc 55 push ebp//oep ★ 00a110cd 8bec mov ebp,esp 00a110cf 83ec 44 sub esp,44 00a110d2 56 push esi//上面是补上的stolen code 00a110d3 ff15 e463a100 call dword ptr ds:[a163e4]//返回这里 00a110d9 8bf0 mov esi,eax 00a110db 8a00 mov al,byte ptr ds:[eax] 00a110dd 3c 22 cmp al,22 00a110df 75 1b jnz short 00a110fc 00a110e1 56 push esi 00a110e2 ff15 f464a100 call dword ptr ds:[a164f4] 

运行lordpe,先完全dump这个进程,然后“区域脱壳”,地址=00a10000,大小=00008000,得到region00a10000-00a18000.dmp文件。用lordpe打开dumped.exe,从磁盘载入region00a10000-00a18000.dmp区段,改其voffset=00610000。只保留lordpe的“验证pe”选项,对dumped.exe重建pe。ok,dump完毕!

         

            

―――――――――――――――――――――――――――――――――

二、避开iat加密,得到正确的输入表

        

         

重新载入unpackit.exe,还记得刚开始在第5次003a381d异常时偶搜索的地址吗?003a64f0

        

 003a54d9 f7f0 div eax//第4次异常 输入表处理 

在第4次异常时偶们在 003a64f0 处下  内存访问  断点

然后shift f9运行,中断数十次就会来到003a64f0处,取消内存断点

 003a64f0 66:f706 2000 test word ptr ds:[esi],20 //①、改为 test word ptr ds:[esi],8 ◆ 003a64f5 74 59 je short 003a6550 //②、改为 jnz 003a6550 ◆ 003a6517 ff75 18 push dword ptr ss:[ebp 18] 003a651a ff50 4c call dword ptr ds:[eax 4c] 003a651d 85c0 test eax,eax 003a651f 74 44 je short 003a6565 //③、改为 je 003a6550 ◆ 003a653d ff76 04 push dword ptr ds:[esi 4] 003a6540 ff75 18 push dword ptr ss:[ebp 18] 003a6543 ff50 4c call dword ptr ds:[eax 4c] 003a6546 85c0 test eax,eax 003a6548 74 1b je short 003a6565 //④、改为 je 003a6550 ◆ 003a654e 8907 mov dword ptr ds:[edi],eax //正确的函数进入正确的地址 003a6550 83c6 08 add esi,8 003a6553 83c7 04 add edi,4 003a6556 ff4d 08 dec dword ptr ss:[ebp 8] 003a6559 75 95 jnz short 003a64f0//循环 

        

因为这个东东的特殊函数不多,所以就不再改了。f9运行,程序达到第5次异常,iat处理完毕。

        

运行importrec,填入rva=006162e4,size=00000240,点“get import”,得到输入表。

有1个特殊函数:006163e4  ? 0000        003a6d54//为:getcommandlinea

        

其他是填充的垃圾数据,cut掉就行了。改oep=006110cc,fixdump!

删除00007000区段,去掉lordpe的“脱壳修复”选项,重建pe优化一下dumped_.exe即可。

        

        

―――――――――――――――――――――――――――――――――   

 , _/ /| _.-~/ \_ , 青春都一晌 ( /~ / \~-._ |\ `\\ _/ \ ~\ ) 忍把浮名 _-~~~-.) )__/;;,. \_ //' /'_,\ --~ \ ~~~- ,;;\___( (.-~~~-. 换了破解轻狂 `~ _( ,_..--\ ( ,;'' / ~-- /._`\ /~~//' /' `~\ ) /--.._, )_ `~ " `~" " `" /~'`\ `\\~~\ " " "~' "" 

   

     cracked by 巢水工作坊――fly [ocn][fcg][nuke][dcm]

                2004-04-18  20:16

                        

原文链接:https://bbs.kanxue.com/thread-263.htm

网络摘文,本文作者:15h,如若转载,请注明出处:https://www.15cov.cn/2023/08/27/obsidium-v1-1-1-4-脱壳――jingulong兄的unpackit-exe/

发表评论

邮箱地址不会被公开。 必填项已用*标注

网站地图