捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:一个简单的压缩自检壳
qiugaoqil 36526 2009/1/1 10:06:40
这个实质上不算壳,而叫附加,为什么那么说呢? 
  1. 没有自己填写导入表
     进程启动用到了灰鸽子的偷梁换柱,加壳用到了熊猫烧香的PE感染
  2. 没有增加自己的代码,脱你的壳只要知道你的文件大小全部分离就OK了
blade9 35474 2008/9/7 16:24:00
// 不知为什么,这个对话框弹不出来
{$R *.res} 去掉这个就有对话框了
dna32r 35361 2008/8/25 10:16:46
To dery:
Dump不可怕~关键是你要把该加密的东西都加密
该Vm的东西都VM。让他Dump出来也还是需要修复。。。
里面再内嵌N多的VM和SDK让他Dump出来也修复不出来

To LZ:
内存执行没意思...简单的.PE Loader演示而已...准确的说连PE Loader都不算:D
还是好好的捣鼓捣鼓真正的加壳技术吧.其实就是感染技术...资源和导入表处理麻烦
一点其他的没啥.关键是你要熟悉PE
dery 35245 2008/8/10 16:33:18
To blade9:
感谢!加了Dialogs单元真的能弹出来了-_-  想不通,明明是Windows API,却需要VCL的库才能正常显示。
不过最好不要引用Dialogs,加VCL的单元会导致Loader异常臃肿。

To vsoft:
嗯,看雪上也有人测试过,有些情况下是可以弹出来的(难道你加的壳是Delphi写的?),大概是引入表上的问题。不过依靠Beep()一样可以做到提示的作用,要是有闲心,还能用Beep普一首曲放里面...囧
vsoft 35220 2008/8/8 8:04:45
TO:楼上的
MessageBox(0, 'PE结构异常!文件被病毒感染或破坏。', '警告!', MB_OK + MB_ICONWARNING);
不需要Dialogs单元,Showmessage才需要。
另外我说一下对话框弹不出来的问题:
我加了一些壳,它确是会弹出来,比如用:RL加Loader后,就会弹对话框了,dery 可以试试...
blade9 35219 2008/8/8 1:49:43
// 不知为什么,这个对话框弹不出来
      MessageBox(0, 'PE结构异常!文件被病毒感染或破坏。', '警告!', MB_OK + MB_ICONWARNING);

uses Dialogs
dery 35218 2008/8/7 9:29:52
没有哪种壳不怕dump的,脱ASPack、UPX之类没有插桩的壳直接用OD跟到入口点就可以dump。除非你用VMProtect这种专门的保护壳,那又是门新技术了...

恰恰相反,这种方式加壳的程序不容易脱下来。因为用CreateThread()而非传统的jmp到OEP,所以用OD跟不到入口点。也许我对这方面不熟,至少我是没有把加过壳的程序dump出来的。
不过知道这个加壳的原理后,就可以搜索CreateThread的调用,然后找出入口点地址。问题在于Loader打过UPX,无法直接bpx CreateThread(这也是为什么我建议给Loader加次壳的原因)。而且就算手脱UPX,还要修复效验和,并把附加的数据段给添上去,你自己试试就知道了。
ps: 建议先给Loader加个ASPack,脱起来容易点;用UPX -d自动脱下的程序是无法执行的;
    如果你想保护加壳的程序,那就给Loader加个强力的保护壳,保证让脱壳的人头疼一阵子。
vsoft 35210 2008/8/6 11:36:47
嗯,这样图标替换就可以无视了。。。

但是还有一个问题,这种方式加壳好像很容易被dump,可否内存保护?
dery 35199 2008/8/5 19:15:03
关于替换图标,具体方法如下:
1.准备两个32x32-32位的图标(主要是两个图标大小要相同),用其中一个作为Loader的图标重新编译之,另一个作为替换源备用。

2.参考resxplor(Delphi自带的例子,盒子也有下载)中定位MAINICON的方法,取得Loader主图标的虚拟地址,计算文件偏移。(比如附带的Shell.ex_的图标,虚拟地址是0x28304,减去.rsrc资源节的虚拟偏移0x28000,加上该节的RAW偏移0xB000,所以文件中图标的偏移是0xB304)

3.用WinHex打开Shell.ex_ 定位到0xB304,其内容正好是图标数据:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
0000B300          28 00 00 00  10 00 00 00 20 00 00 00
0000B310   01 00 04 00 00 00 00 00  C0 00 00 00 00 00 00 00

4.打开之前的备用图标文件,跳过头部的图标描述部分0x16字节,内容如下:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000010          28 00  00 00 10 00 00 00 20 00
00000020   00 00 01 00 04 00 00 00  00 00 C0 00 00 00 00 00
把从0x16开始的图标内容覆盖到Shell.ex_中对应位置,然后刷新显示,图标就替换完成了。

由于这个方法限制颇多,就不给出具体程序了。
mzfeitian 35129 2008/7/29 11:16:39
这思路不错呀。再想其它办法,把它(思想)搞得更好就得了。
vsoft 35058 2008/7/23 14:05:26
定位到资源节中的图标,用新图标覆盖原始数据
完全没有头绪~~,期待你出手了...
dery 35039 2008/7/22 22:49:29
我的邮箱:dgrave@126.com
QQ:443101052
如果你对程序有什么想法或者改进,请转发一份到我的邮箱:)
dery 35038 2008/7/22 22:40:58
是我的疏忽...加壳后的程序不能直接用UpdateResource()更新资源节,因为UpdateResource执行后会把附加的文件流清除,导致程序无法执行。之前还以为可以像普通捆绑器的做法,直接用UpdateResource()搞定呢。

不过也可以定位到资源节中的图标位置,用新图标覆盖原始数据(不过具体问题很多,比如图标大小不能超过原始大小)。具体定位方法可以看Delphi安装目录/Demos中的resxplor。
vsoft 35034 2008/7/22 14:43:25
----------
C:\Key.exe
----------
C:\Key.exe 不是有效的 Win32 应用程序。


----------
确定   
----------

更换图标后就报这个错,请问有没有QQ之类的聊天帐号,在线讨论一下~~
vsoft 35032 2008/7/22 14:22:19
to : dery

我更改图标后,好像不能运行了。。。,加壳的程序,请指点。。
dery 35023 2008/7/21 21:39:40
由于这个壳是通过文件流的方式而非新增区段,所以图标不会像UPX或ASPack一样保持原始程序的样子。而使用FindResource()和UpdateResource()来修改图标,会遇到兼容性问题(如不同语言或有不同大小图标的程序)。

写这个只是感觉用Delphi的越来越少,想尽量吸引些新人来支持Delphi(这是当然是胡扯,当时根本就没有这么想过),所以代码尽量写得简单清晰(Loader和ShellBuilder的主流程代码都不足100行,呵呵)。
你可以自己试试在ShellBuilder中加入相应代码:用FindResource()查找原始文件的图标,然后用UpdateResource()更新到加壳后的文件里,只不过UpdateResource不太好用的。
zh2000 35016 2008/7/21 18:30:18
支持你下一版....
vsoft 35012 2008/7/21 13:21:52
由于没有做图标处理,所以加过壳的程序都是Loader的图标。
==========
支持你下一版,对图标处理一下,(加过壳的程序都是Loader的图标,不是很好。。。)
第一页 上一页 下一页 最后页 有 18 条纪录 共1页 1 - 18
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表