开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 42242|回复: 511
收起左侧

[易语言纯源码] 完整的易语言编写的加壳程序开源

    [复制链接]

结帖率:100% (1/1)
发表于 2022-9-4 10:56:23 | 显示全部楼层 |阅读模式   广东省深圳市
分享源码
界面截图: -
是否带模块: -
备注说明: -
本帖最后由 htpidk 于 2022-9-4 18:02 编辑

0904 13:27之前下载的请重新下载,更新了一个崩溃的BUG

在写这个程序之前在百d和论坛还有其他几个论坛都搜了一下是否已经有开源过易语言编写的加壳工具,但是找到的都不是真正的加壳工具,要么是调用命令加UPX壳,要么是模块里有几个压缩PE区段数据的命令而已,没有找到一个开源的能完整显示加壳流程的帖子(也有可能我搜索姿势不对),因此写了这个源码,从PE头怎么处理到怎么添加区段,怎么修复重定位表、导入表、IAT表、安全表等等方面都完整写出来了,断断续续写了三四天,光修复BUG就花了一天,因为不好调试,调试被加了壳的程序只能上OD(因为我写的这个是加密壳,用IDA不管用),OD里找到问题点后再去看源码是哪里的问题,调试的头昏脑涨。
本来是想再添加多几个壳的功能例如检测调试器,增加强度加大脱壳难度之类的再发的,但是今天在公司加班也没什么事就在公司发出来吧,大家要什么功能自行拓展。

大致说一下写加壳工具的原理(我忘记最开始接触写壳的代码是在看雪上还是《加密与解密》这本书里,时间挺久的了应该是在15或16年,因为当时是第一次接触写壳方面,所以映像非常深刻,这个代码的原理也是借鉴那里面的),这样看源码的时候就比较好理解了,源码里我做了很多注释,只要对PE结构体有一定了解的人看起来应该问题不大,首先PackShell要用黑月编译,为啥用黑月?只有一个原因就是因为它生成的dll小啊,这样最后被加壳的程序体积也就比原先大一点而已。
1:程序会先读取被加壳程序的各种PE相关数据,例如区块数啊,入口点啊,各个区块的RVA啊之类的,还有最重要的就是数据目录表里的导入表、重定位表、IAT表和安全表了,这些表的相关RVA和大小都要记录起来。
2:把前面记录起来的数据放到用黑月编译的PackShell.dll里,这个dll里有一个导出函数SetShellDataPointer,调用这个导出函数设置既可。
3:修正dll里的导入表、重定位表等数据
4:给被加壳的程序添加一个区块,再把记录了相关数据和修复了导入表和重定位表的dll写入到这个区块里。
5:把被加壳程序的代码段进行加密或压缩,进行加密就是加密壳,进行压缩就是压缩壳,我写的是一个加密壳,只是简单的异或加密。
6:处理附加数据,修改数据目录表里的导入表、重定位表、IAT表和安全表等表的RVA,设置程序的入口点为这个dll里的StartFunction。处理附加数据时默认这些附加数据都是证书,所以如果附加数据不是证书的话,处理附加数据那里就需要修改,大部分有附加数据的数据都是证书部分,如果程序没加其他壳,即使程序有证书,用这个DEMO加了壳后也可以用,例如VX电脑客户Duan,而有的程序是加了其他壳后再添加的证书,这种加了其他壳的就不支持,例如360极速浏览器。
7:保存生成新文件。

PackShell.dll的流程
1:解密被加壳程序的代码段,因为我们构造的StartFunction这个入口点函数也相当于是dllmain,会在4种情况下被调用,而我们只需要解密一次代码段,所以需要用一个变量控制下。
2:如果被加壳程序有重定位表,例如dll或者有重定位表的exe就修复被加壳程序的重定位表。
3:修复导入表。
4:调用被加壳程序的原入口点。
这样就完成了一个简单的加壳工具的编写,当然这是一个总体的流程,具体里面会涉及到很多,看源码的时候认真研究一下就可以了。

这个DEMO给程序加密时只是简单的进行了异或加密,然后添加了一个信息框,被加壳的程序打开时会弹出这个信息框,没做其他强化,所以这个壳也很好脱,你们可以自行拓展,例如抽取导入表,把导入表跳转到dll里,dll里再调用原导出函数,这样就做到了壳中有籽,壳就脱不完全,还有壳的代码里可以加上检测调试器的功能之类,这些要实现起来都是非常简单的,看懂了源码自己加吧。

补充一下,前面说的有附加数据的程序加完壳后可能会运行不了,怎么看程序有没有附加数据呢,懂PE的可以自己计算,最后一个区段的文件偏移加上文件大小小于文件大小就说明程序有附加数据,代码里也有写,不怎么懂PE的可以用PEID看,显示Borland Delphi 6.0 - 7.0 [Overlay]之类的字样就是有附加数据,看后面有没有Overlay,现在有附加数据的程序大部分都是加了证书,另外这个DEMO不支持给其他已经被添加了其他壳的程序加壳。

下面放几张代码图和测试图,加壳工具里我所有的加壳代码都是写在一个叫Pack的子程序里,所以这个子程序非常长
2.JPG
4.JPG

成功加壳后会在原程序添加一个区段
1.JPG
没有严格校验证书的软件也可以加壳(必须没被其他加壳工具加过壳才可以用本DEMO加壳)
2.JPG

加完壳的程序签名依然有效
3.JPG

10.JPG
甚至可以自己给自己加壳
1.JPG

为什么老是提示没有合法的文件被上传,都是一个工具截的JPG图只能上传几张,其他几张都提示不合法文件,这个BUG好久了,前几次发帖的时候就有这个问题,什么时候能修复好
shell.rar (235.87 KB, 下载次数: 618)

点评

下面置顶贴有一楼针对UPX壳进行了更新,加了UPX壳的现在再用这个壳加第二次已经没问题了   广东省佛山市  发表于 2022-9-7 19:35
有人问防破强度行不行,就这DEMO当然不咋地,不过你可以无限套娃啊,只加这个壳可以无限加,我试过加到第8层还可以正常运行,累也累死破J者了   广东省广州市  发表于 2022-9-6 07:31
有的人编译的时候没关插件,那些插件会自动加upx   江西省上饶市  发表于 2022-9-5 18:49
dll不要静态编译不要静态编译不要静态编译,一定要用黑月编译   广东省佛山市  发表于 2022-9-5 18:42
加完不能正常运行的看楼下置顶贴,有些人的水平真实不敢恭维,怎么查软件之前有没有已经加了壳的都不知道   广东省佛山市  发表于 2022-9-5 10:58
点击加壳直接闪退,这加壳工具兼容性是不错   山东省聊城市  发表于 2022-9-5 10:29
我加完也没跑起来,全新编译的程序,之前没加过其他壳   广东省深圳市  发表于 2022-9-5 09:39
当然也并不能保证能100%跑起来,千奇百怪的情况太多了,跑不起来的如果程序之前没加其他壳,就需要你们自己调试了,我只是抛砖引玉   广东省佛山市  发表于 2022-9-5 09:06
加完壳跑不起来的请确保程序之前是不是已经加了其他壳,怎么查有没有加壳就不需要我多说了吧   广东省佛山市  发表于 2022-9-5 09:04
0904 13:27之前下载的请重新下载,更新了一个崩溃的BUG   广东省广州市  发表于 2022-9-4 21:32

评分

参与人数 17好评 +13 精币 +32 收起 理由
远赴 + 1 + 2 YYDS~!
kk2apple + 1 支持开源~!感谢分享
易语言资源网 + 1 + 5 开源精神必须支持~
wdyjm + 1 + 1 支持开源~!感谢分享
司徒西 + 1 + 2 支持开源~!感谢分享
llxx123 + 1 + 2 支持开源~!感谢分享
z3201 + 1 + 2 YYDS~!
午夜寒冬 + 1 感谢分享,很给力!~
斩月Aphack + 2 卧槽 牛逼!
冰点 + 1 + 3 感谢分享,很给力!~
猪滴寳貝哝 + 1 + 2 还有很大的升级空间~
CAMPS + 1 + 2 支持开源~!感谢分享
1789267449 + 1 + 1 加完壳,程序跑不起来,dll用黑月三种编译的,易语言静态编译,都试过了!.
wuqingg + 1 YYDS~!支持开源感谢分享!
780715740 + 1 + 2 支持开源~!感谢分享
QQ1329127360 + 2 开源精神必须支持~
空竹 + 1 + 2 前排留名

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (1/1)

签到天数: 23 天

 楼主| 发表于 2022-9-4 13:27:55 | 显示全部楼层   广东省深圳市
本帖最后由 htpidk 于 2022-9-5 09:08 编辑

0904 13:27之前下载的请重新下载,更新了一个崩溃的BUG

加完壳跑不起来的请确保程序之前是不是已经加了其他壳,怎么查有没有加壳就不需要我多说了吧,当然也并不能保证能100%跑起来,千奇百怪的情况太多了,跑不起来的如果程序之前没加其他壳,就需要你们自己调试了,我只是抛砖引玉
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 23 天

 楼主| 发表于 2022-9-5 10:57:14 | 显示全部楼层   广东省佛山市
本帖最后由 htpidk 于 2022-9-5 11:06 编辑

有些人的水平是我真低估了,虽然我测试时确实也有加了壳的不能正常运行了,但是比例也不算高,易语言写的我测试了5个全部正常,其他网上下载的工具我也测试了差不多将近20个,其中有5个加了打不开,其中有3个是已经加了其他不兼容的壳或者证书的,还有2个确实不知道什么原因,PEID查没有壳,但是也有可能是加了其他壳PEID没有检测出来毕竟PEID那么多年不更新了,我加了两个人看情况,真是让我吓尿了,第一个用它来加已经加了其他壳的不能正常运行,让他查有没有已经加了壳不会查,第二个用它来加64位的程序,我还能说什么呢,我随便截了几个图都是网上下的工具,加完壳不能正常运行的真的好好检查检查再说吧,哎
1.JPG
2.JPG
3.JPG
4.JPG
5.JPG
6.JPG
7.JPG

其他的我也懒得截了,VX都能加为什么你的不能加有没有好好想过呢,不知道软件有没有已经加了壳的,你好歹用易语言自己写个空程序测试一下看看是不是其他程序的原因啊,服了

回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 23 天

 楼主| 发表于 2022-9-7 19:33:45 | 显示全部楼层   广东省佛山市
shell.rar (626.75 KB, 下载次数: 191)
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 23 天

 楼主| 发表于 2022-9-8 23:36:39 | 显示全部楼层   广东省佛山市
本帖最后由 htpidk 于 2022-9-9 00:34 编辑
1789267449 发表于 2022-9-8 22:42
转移话题,你看不出来我这是挑你刺怼你么,哈哈这都看不出来,还好意思说静态编译

我原话怎么说的 【加 ...

1.JPG
大佬自创的找代码段的方法,就是只要有可执行属性的段都视为代码段,就加密。

16.JPG 修改只读数据段加上可执行属性,程序可以正常运行

17.JPG
代码段去掉可执行属性,程序一样可以正常运行

打脸1:区段可以改属性,本来没有可执行属性的段也可以加上可执行属性,按照他自创的牛逼方法,这样是不是把数据段也当成代码段了,这样就把数据段也给加密了,这样的区段多几个都被误加密了后运行的时候解密多了影响效率,还有易语言和VC6写的程序因为没有DEP的原因可以随便修改代码段属性,去掉可执行属性一样执行,这样按照这个方法找不到任何一个区段有可执行属性,也就是找不到代码段,结果就是不会对任何一个字节加密。口口声声说兼容性,这个自创的方法真不错呢,兼容性真好,呵呵,创的很好,下次别创了,丢人。



2.JPG
这个大佬可能DEP是什么东西都不知道更别说硬件DEP和软件DEP了

7.JPG
打脸2:我演示了WIN7可以修改代码段去掉可执行属性一样可以运行,然后继续嘴硬就如上图一样,说WIN10数据段不能执行代码,继续上图继续打脸


打脸图继续看上面那张图
修改了程序的一些数据说没修改,呵呵,其他的我不知道,就那个易语言空窗口的说没修改真是笑死,我试了那么多版本易语言都没复现他发的那个程序的代码段大小居然和区段的代码段大小不一样,试了5个版本易语言编译出来的程序只要没修改过的都是一样的,然后加壳不行说不兼容,我把他改过的地方改回去加壳就正常了,就说出了本帖最搞笑的找代码段的方法也就是他自创的那个方法,只要区段有可执行属性就是代码段。

打脸3:还是前面那些,对于那些修改后很多区段都有可执行属性的程序或者没有一个区段有可执行属性的程序,按照他说的方法要么会对所有可执行区段加密,要么不会加密任何一个字节的数据,拿几个改过的程序加壳不行说兼容不行,呵呵他自创的找代码段的方法兼容就行?呵呵


6.JPG
9.JPG
现在居然上github都是一件可以炫耀的事了

8.JPG

打脸4:可惜我五六年前就开始上github了,按照他的要求从github上还有看雪上都找了源码,可惜都不是用它自创的那个搞笑的方法找的代码段的大小,然后说人家写这个代码的时候都是菜鸡,所以就是错的。呵呵,这里就懒得截图了,冒犯了那些大神不好,毕竟我不觉得人家菜。

9.JPG
说自己两年前就看过C++的源码呢,建议我多了解了解

12.JPG
打脸5:可惜我15年还是16年就看过了,这个比是装不成了吧


13.JPG
说我翻译不承认


打脸6:还是上面那图,我已经说了这个源码是借鉴C++源码的,我有啥承不承认我可没有说我原创,还有原版C++源码shell里是用ASM写的,获取函数也是自己实现的getprocaddress,所以没有处理shell的导入表因为用不上导入表,而且不支持给DLL加壳,这些我都加上了。


15.JPG
说delphi编译器默认编译出来的代码段会大于正常的代码段

3.JPG
打脸7:微软已经定义了PE头的代码段大小是和文件大小对齐的了,所以没有所谓的设置对齐后就比正常的代码段大了,你那所谓的正常的代码段大小是什么意思?本来人家就已经是对齐了的。

看见没,前面打了那么多次脸还在这装呢,关键是从来不正面回答问题,最开始就是说兼容性问题,用它自创的那个搞笑方法兼容性更差,前面该发的图和动图都发了,还一直不承认呢,还说什么不要只想着加密代码段,怎么的,我只想加密代码段,你逼着加密所有有可执行属性的段啊(我又不是压缩壳为啥要加密所有段),或者所有段都没有可执行属性,就加密不了任何一个字节的数据,这兼容性真牛逼。打一次脸就换一个问题继续装,打的我手都疼了


最后看看牛逼大神写的程序加的区段
区段乱码.jpg

就这种添加区段都能添加出乱码,还有最基础的代码段长已经是对齐了的都不知道的还敢这么理直气壮的,啧啧,这脸皮和心态真是甘拜下风。



点评

你还忘了一个离谱的东西:他虚拟机里面有2345浏览器,真的电脑里不知道有啥全家桶不会卸载呢~大佬NB!听不懂的知识就是好的知识!   美国  发表于 2022-11-20 10:00
回复 支持 反对

使用道具 举报

签到天数: 25 天

发表于 2024-11-7 11:03:12 | 显示全部楼层   广东省珠海市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 9 天

发表于 2024-8-7 11:05:52 | 显示全部楼层   湖南省郴州市
666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2024-7-15 03:42:45 | 显示全部楼层   江西省南昌市
支持一下
回复 支持 反对

使用道具 举报

结帖率:61% (20/33)
发表于 2024-7-15 03:33:43 | 显示全部楼层   福建省福州市
6666666666666
回复 支持 反对

使用道具 举报

结帖率:69% (9/13)

签到天数: 6 天

发表于 2024-7-10 00:15:03 | 显示全部楼层   江西省抚州市
6666666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2024-5-18 22:22:26 | 显示全部楼层   韩国
用不了 搞这么多干嘛 骗子
回复 支持 反对

使用道具 举报

结帖率:25% (2/8)

签到天数: 10 天

发表于 2024-4-2 13:15:27 | 显示全部楼层   四川省成都市
        支持,膜拜了~
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2024-1-19 10:43:40 | 显示全部楼层   河北省廊坊市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2024-1-16 01:28:04 | 显示全部楼层   河南省平顶山市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (7/7)

签到天数: 22 天

发表于 2023-9-12 17:40:13 | 显示全部楼层   广东省佛山市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表