首页
社区
课程
招聘
[原创]分享用C语言写壳程序和加壳源码--技术逐步提高
发表于: 2013-6-13 11:17 19755

[原创]分享用C语言写壳程序和加壳源码--技术逐步提高

2013-6-13 11:17
19755
之前贴了一贴子:分享用C语言写ShellCode的实现源码 到现在好几天了,因为是分享我的源码,所以我贴源码之前就留了一些问题需要对源码进行改进的或甚至里头有错误的地方,这么多天了,哎!下源码的人倒是有2、3十人,都没有人提出程序的弊端问题来!是大牛没有时间?还是不愿意提出来?看雪版主肯定也是希望大家互进的,今天我再来分享用C语言写壳程序和加壳源码,但是相对之前技术需要逐步提高。希望大牛不要掖着,把你的技术和想法拿一些出来分享,就当我的分享是来与你交换的,如果编程技术如果可以在人与人之间拷贝那该多好!但事实是残酷的,学编程技术需要人们相互帮助而无法相互拷贝!

之前那个壳源 ExeShellCode.rar 在给Win7系统工具加壳后是有问题的,什么问题呢?问题出在EXE 文件加载重定位了,不是预加载地址了,导致 CmpNewPeInf 函数返回0、同时在判断内存可读的内存长度太大; 好!现在这个附件的 ExeShellCode  完全支持Win7的, 同时 ExeShellCode  加了一些无意义的花指令、也对壳程序里的 ExeShellCodeShowWindows 函数机器码进行了简单的加密,当然我们可以实现对更多的函数机器码进行加密,加密算法也可以任人发挥,我这里只是样本。加了一个 PeAddressFunc.cpp 文件,这个文件实现了我们在对PE文件进行各种地址转换需要的实现函数,其中23个函数的参数要么有Module,要么有ImageModule,要么是FileModule,现在就解释一下:ImageModule 意指由PE加载器加载到内存的模块基地址,而FileModule意指由程序以普通读文件数据的方式把PE文件数据读入内存。Module则是前面两者皆可的参数。我还没有全部使用过这23各函数,如果有写错的地方,请批评指出。

再次说一声:大牛,别关看,有什么创意的技术或想法可以拿出来分享,给看雪增加互助的气氛;也可以直接发个消息说说你对我分享的源码有什么创意的技术或想法。

郁闷! 到现在看雪上怎么有几百人次只下去看,却没有人站出来说说应该如何进一步改进或展望。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 9
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享....
2013-6-13 11:27
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
linziqingl兄,我昨晚下了你分享的工程,今天早上正在学习,
还未完全消化,只觉受益匪浅,感谢。

因之前我做过的一些项目里都是用汇编开发shellcode,
虽然控制起来灵活自如,但是后面越来越觉得开发维护困难
遂想寻求C语言开发shellcode的范例
幸得你的分享,十分感谢

待对你的工程融会贯通,一定写上学习心得和自己的想法。。

2013-6-13 11:50
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
4
用汇编开发维护确实困难,C语言可以很容易修改和扩展,但是ShellCode的容量要比汇编大一些。

到时候别忘了把心得和想法分享给我。
2013-6-13 11:54
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
一定的 : )
2013-6-13 11:59
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
非常感谢! 先顶后下
2013-6-13 12:11
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
楼主如果要写壳,咱出个主意给你.

shellcode 和普通code的区别就是,一个需要重定位表,一个不需要重定位表.

我们可以这样,将我们的shellcode编译成dll,然后搜集重定位表,然后呢,将重定位表和代码一齐写到目标exe中.

再写一个LoadPe头,来加载代码,并修复重定位表,简单,高效~~~毫无压力...
2013-6-13 15:16
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
写壳,就是那么简单,当然,上面的主意,只是灵光一闪,理论上应该可行...

实际上可能还有很多要处理的,应该都不是大问题...
2013-6-13 15:18
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
9
以前我自己从重定义过重定位表信息的数据结构,也尝试自己构建自己可识别的重定位信息,可以比PE里的重定位表信息小一半,只是我现在不知道放硬盘的什么地方了。你的主意不错,不过这些我已经早就会了,不想再去写这样的代码了,我应该把写这个代码的时间用于学习更多我不懂得编程技术,你觉得对吗?一辈子其实不长啊!
2013-6-13 15:39
0
雪    币: 1122
活跃值: (1308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
膜拜了  冒充字节
2013-6-13 15:43
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
膜拜楼主,楼主是个实在人
2013-6-14 08:01
0
雪    币: 328
活跃值: (154)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
12
牛都去工作了……
2013-6-14 09:20
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
13
我只是业余的!@
2013-6-15 12:59
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
C语言是如何深入的啊?
2013-6-17 09:32
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
15
我就学会基本,或许基本都过不了
2013-6-17 18:04
0
雪    币: 74
活跃值: (748)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
感谢分享,下来看看
2013-6-17 21:13
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
任意VB程序在跳转原入口会获取不到 模块基地址。刚下了这个版本看了下,似乎没有这个问题了  支持楼主,正在消化
2013-6-18 10:50
0
游客
登录 | 注册 方可回帖
返回
//