-
-
关于加壳后面有[overlay]类型的软体壳脱问题!
-
发表于:
2006-11-29 14:59
6636
-
关于加壳后面有[overlay]类型的软体壳脱问题!
我是只菜鸟.经验不多,我因为我喜欢跟(****加壳类型)[overlay]型形的软件,所以注册一个overlayer的名子,相信不少像我这样的菜鸟.也同样遇到过这种带有附加数据型形的软件,用相应的脱壳工具,不能顺利脱壳.就是能脱壳后也不能正常运行,小弟跟这种软件几个月了,心里有话想说,同样也有问题要问,非常感谢看雪才老哥给我们提供一个并交流的平台,在此我相把我知道的关于[overlay]一些资料和大家分享.也希望大侠们回答点我们菜鸟的一些问题.
关于overlay
1.关于overlay:现在有好多教程关于脱壳技术方面的,但是关overlay的太少,所以大多数的人对它都不是太熟悉,但是越来越多的软件加壳后用PEID侦测后,有壳的类型后面多一个[overlay]好多人在网上问是什么壳,其实他不是一种壳的类型,只是种附加数据罢了,例如:Inno Setup Module Heuristic Mode [Overlay]。overlay的真正作用就是取消打开功能,将一些需要读取的数据放到pe文件的后面,将数overlay自身数据和pe绑定,让程序自动的运行打开的功能。
2.overlay绑定的软件进脱壳怎么办:(个人看法不知道对不对)其实带有[OVERLAY]附加数据软件,OVERLAY只是按照一定的规律把原程式的里语言指今重新排列后和overlay融这一体,他不同于伪装壳。所以在对有附加数据的软体进行脱壳里在进行必在的处理,要想对有OVERLAY数进行处理,就必须对overlay特点有所了解。overlay特点:1。overlay只是数据他是不映射到内存的,他将被程序以打开自己的方式来读取数据。他提供他自己的程序打开自己来读取,所以dump下来的时候是没有overlay的,需要我们手动把这一部分的数据粘贴到dump下来的数据后面。 2.overlay的开始地方就是最后一个区段的RA+RS
3.怎样把附加数据处理好:
知道上面overlay特点后怎样把附加数据呢?要想对附加数据进行处理就必在内存镜像和映射有所了解。
win32程序对文件的操作有两中普通的文件操作和内存镜象文件。 首先就会关系到两个函数CreateFileA和SetFilePointer。对于CreateFileA他是打开文件的函数,当你下断CreateFileA你会发现程序断下的时候,他的第一个参数就是这个pe文件在磁盘上的完全路径,表示他正在对文件打开,将要对他进行文件读写操作。SetFilePointer: DWORD SetFilePointer( HANDLE hFile, //在用CreateFileA打开后得到的文件句柄LONG lDistanceToMove, //要移动的距离,这个是低32位PLONG lpDistanceToMoveHigh, //要移动的距离,这是高32位,要注意这是一个指向数据的指针DWORD dwMoveMethod //表示指针开始的位置); 因为用CreateFileA打开一个文件后,系统会给这个文件维护一个指针,一开始是指向文件的第一个字节的。这个函数的作用是人为的移动这个文件指针。理由很简单,overlay数据不是在文件的第一个字节处。而他的返回值就是移动后的文件的新指针的位置。
最后:关于overlay我就知道那么多,希对和我一样的菜鸟有所帮助,在些我也想请教大侠前辈位一些问题,最过我跟一个软件加壳类型为:InstallShield 2003 Stub [Overlay]进行上述操作后,仍不能搞定,希望大侠们能给指点一二,在此多谢了.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课