今天看到一个程序,用万能的reflector 看了一下,竟然只有一个actmp.dll ,如何谷歌了一下,发现是用的一款叫Sixxpack进行了压缩和加壳
网上有人说非常安全,那个寒...
说一下脱壳的过程
一、用reflector 直接输出项目
二、打开项目,编译,会有一些类型的小错误,修正一下
三、修改一行代码
Stream stream2 = new FileStream(Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf('\\') + 1), FileMode.Open, FileAccess.Read);
改成:
Stream stream2 = new FileStream(@"c:\hhh.exe", FileMode.Open, FileAccess.Read); //这个路径指的是那个被加壳的程序
四、加一行代码
在这行之前:Assembly assembly = Assembly.Load(compressor.Decompress(inStream));
加上:System.IO.File.WriteAllBytes(@"c:\test.exe", compressor.Decompress(inStream));要不要retrun,自己看着办
五、c:\test.exe 就是被脱壳的程序了。
结论:
1、该种方法就是将原程序写在固定程序的尾部,加了之后,是不会影响固定程序的运行的,好像N多年前搞VB的时候,玩过这种方法,包括现在很多flash文件的exe形式,也是这样的
2、固定文件的大小是固定,像上面的这个就是 internal static int orig = 0xa000;
3、在加到尾部之前,使用了7-zip进行了压缩!(该代码可以好好用下)
4、上面的方法很烂!!!
5、要保护.net代码还是建议大家使用混淆名称和混淆流程的保护软件,reflector自己的对立软件就不错,真的是矛和盾啊!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现