找回密码
 注册
搜索
热搜: 回贴

脱壳技术,Armadillo 2.5x 加壳的Konvertor 3.13脱壳(5千字),Armadillo

2010-1-30 18:19| 发布者: admin| 查看: 97| 评论: 0|原作者: 情殇


脱壳技术,Armadillo 2.5x 加壳的Konvertor 3.13脱壳(5千字),Armadillo
2008年06月23日 星期一 下午 03:54
Armadillo 2.5x 加壳的Konvertor 3.13脱壳

crack by fwnl

软件说明:是一个图片、音乐、文字及影音格式文件的转换程序,它总共可以转换135种文件格式,包含25种音乐格式、4种影音格式、105种图片格式及1种文字格式。

软件下载:http://www.onlinedown.net/konvertor.htm

破解工具:trw2000,Import REConstructor v1.4.2 ,winhex10.45, Peditor 1.7.



首先要谢谢hying,leo_cyl,yahoo007,电神等大哥,因为这篇文章中的内容是按他的研究成果来写的.

特别是yahoo007大哥给了我不少帮助,也要谢谢hying大哥给我的Konvertor 3.12A的输入表.

由于最后输入表的问题并没有完美解决,所以还希望各位说说手动修复输入表的方法和技巧,因为这

方面的资料真是太少了,这也是我写这篇文章的初衷之一吧,谢谢



一.找oep

方法一:

这种方法是按leo_cyl上次的脱文来找的,原理请看leo_cyl写的Armadillo 2.52的脱文(强烈建义

脱壳前看看,并搞清楚原理)



首先用trw2000载入主程序,下 bpx createprocessa. F5返回程序被中断,下Pmodule返回程序中

然后Ctrl ↓ 向下看



0187:00909B06 CALL `KERNEL32!WaitForDebugEvent` //看到这个就不远了

0187:00909B0C TEST EAX,EAX

0187:00909B0E JZ NEAR 0090A128

0187:00909B14 MOV DWORD [EBP FFFFFD70],00911468

.............

.............

注意下面的这几句格式,在别的加壳程序中也是差不多的

0187:00909CB7 MOV ECX,[EBP FFFFFE74]

0187:00909CBD CMP DWORD [ECX 0C],C0000005

0187:00909CC4 JNZ NEAR 00909E89

0187:00909CCA MOV EDX,[EBP FFFFFE74]

0187:00909CD0 CMP DWORD [EDX 5C],BYTE 00 //下断在这里

0187:00909CD4 JZ 00909CE2

0187:00909CD6 MOV DWORD [EBP FFFFFD70],009114E8



于是bpx 909cd0, f5返回,程序中断在00909CD0 下dd edx 18,再按一下F5可看见oep-> 474e06



方法二:

这种方法是按电神大哥说的方法来找的:



首先用trw2000载入主程序,bpx VirtualProtect,,在最后一次被中断后,下Pmodule返回程序,然后F10

单步走,当走到遇上的第2个call时,F8进入,然后F10单步走,直到走到call edi,

edi的值就是oep-> 474e06

注意:开始 bpx virtualprotect 时,其中会中断很多次,这个程序在我机子上是中断 91 次,

所以我就是从第 91 中断后开始 F10单步走的.



二.初步脱壳

这里我是用的hying大哥的方法,因为leo_cyl上次的脱文中的意思我还没有搞明白,那篇文中谈到的几个

关键点在这个程序中我没找到 :(



下面的事就是要把hying大哥说的一段代码写入到程序里

6804000000 push PAGE_READWRITE

6800100000 push MEM_COMMIT

6800005800 push 580000h <-用peditor看程序的size of image ,我这里看到是57f000,大一点就写

6800000000 push 0 580000h

xxxxxxxxxx call VirtualAlloc <-申请内存

mov edi,eax

mov ecx,57e000 <- size of image-1000h= 57e000

mov esi,401000h <-基址加1000h,有的程序不是这个值

rep movsb

载入程序,按一下F10,看看当前的地址,我的是90b7d9, 于是d 90b7d9, Alt ↓ 向下看

看到 910F64处内存有一片 00 00 00 00 00



重新载入程序.bpx VirtualAlloc,Pmodule返回程序中,code on,可是看到

Call KERNEL32! VirtualAlloc前的代码,我机子上是 FF1528019100



然后,再重新载入程序, d 910F64 再 u 910F64,在内存窗口开始填入680400000068001000006800005800

6800000000FF1528019100,可看见下面内容, 再A 910f7e 回车写入 mov edi,eax 就可知代码为 89c7

后面的也是这样,最后可见代码窗口为下面这样:

0187:00910F64 6804000000 PUSH DWORD 04

0187:00910F69 6800100000 PUSH DWORD 01000

0187:00910F6E 6800005800 PUSH DWORD 00580000

0187:00910F73 6800000000 PUSH DWORD 00

0187:00910F78 FF1528019100 CALL `KERNEL32!VirtualAlloc`

0187:00910F7E 89C7 MOV EDI,EAX

0187:00910F80 B900E05700 MOV ECX,0057E000

0187:00910F85 BE00104000 MOV ESI,00401000

0187:00910F8A F3A4 REP MOVSB

0187:00910F8C 0000 ADD [EAX],AL



用Peditor 1.7打开原加壳程序,点FLC,在virtual Address 填入910f64,点do! 可知offset(hex)为3BF64



用winhex打开原加壳程序,从3BF64开始写入 6804000000680010000068000058006800000000FF152801910089C7B900E05700BE00104000F3A4

保存后用trw2000打开这个被修改的程序,bpx 474e06 ,中断后 r eip 910f64 ,然后f10单步走,走到00910F7E

时记下eax的值,我机子上是5560000,继续走到 910f8c时,下命令 w 5560000 5ADE000 c:\ppp.bin

(5560000 57E000=5ADE000)

然后 r eip 474e06,F5返回,关闭程序



这时我们载入原加壳程序,bpx 474e06, f5返回中断,pedump脱出程序test.exe

用winhex分别打开test.exe和ppp.bin,在test.exe的offset 1000处开始,用ppp.bin替换下面的数据,

替换的长度就是ppp.bin的长度,然后保存.



三.修复输入表

这部分对我来说太难了,因为工具并不能完全解决.我的方法是:

在Import REConstructor v1.4.2 的 Attach to an Active Process 窗口中选取加壳程序的进程,有2个进程选上面的一个,然后在下方的oep处填入00074e06,点IAI AutoSearch,再点Get Imports,然后点Auto Trace,然后点看还有多少地址是NO,剩下的事就是手动找这些函数了.



hying大哥说过 CreateEventW

GetStringTypeA

如果发现这两个函数连续在一起的话,上面一个该改为GetStringTypeW



手工修复修入表后,程序应能运行了,好像也就不用注册了,可是注册部分在壳中,壳脱了注册也就不用了



这程序的输入表我是手工找到一部分,然后参照hying大哥给我的Konvertor 3.12A的输入表修复的



真希望那位能说说手工输复输入表,因为没有谁具体说过,都是很抽象的,向我这样菜鸟根本搞不明白,

我看了很多资料也只看到,BPX GetVersion ,然后在u 那些未解决的地址,再看看上面或下面,找出正确的函数.但是并不是所有的都能这样解决.



因为是初次接触Armadillo的壳,所以中文错误和不足之处可能不少,希望各高手指正,那样就太谢谢了


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 23:26 , Processed in 0.148304 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部