转帖一篇sixxpack破解的文章!
星期天闲着没事玩游戏,玩游戏不能无外挂。于是百度了半天,找到了一个,看介绍貌似不错,就下载了下来。一看,竟然是用.net写的,下意识地Reflector了一下。发现竟是一个叫actmp的程序集。如图:

namespace Sixxpack
{
using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms; internal class stub
{
internal static int orig = 0x8000;//加密程序集的偏移量 [STAThread]
private static void Main(string[] args)
{
try
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(stub.myResolveEventHandler);//程序集解析失败的后路
}
catch (Exception)
{
}
object[] parameters = new object[] { args };//参数,如果有,就传给解压出来的程序集
MemoryStream inStream = new MemoryStream();//构造一个内存流
Stream stream2 = new FileStream(Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf('//') + 1), FileMode.Open, FileAccess.Read);//打开一个文件流,指向正在运行的这个文件
stream2.Position = orig;//当前流的位置设置为加密程序集的偏移量
byte[] buffer = new byte[stream2.Length - orig];//一个缓冲字节数组,长度为加密程序集的长度,用来存储加密程序集
stream2.Read(buffer, 0, Convert.ToInt32(buffer.Length));//把加密程序集读取到缓冲数组里
inStream.Write(buffer, 0, buffer.Length);//把加密程序集从缓冲数组里写到内存流里
inStream.Seek(0L, SeekOrigin.Begin);//把当前流的位置放到开始处
Compressor compressor = new Compressor();
Assembly assembly = Assembly.Load(compressor.Decompress(inStream));//把内存流中的数据解压出来,并加载到一个程序集
try
{
assembly.EntryPoint.Invoke(null, parameters);//执行这个程序集的入口方法,并传给参数
}
catch
{
assembly.EntryPoint.Invoke(null, null);//没有参数的话就不传
} } private static Assembly myResolveEventHandler(object sender, ResolveEventArgs args)
{
string path = args.Name.ToString().Trim().Split(new char[] { ',' })[0].ToString().Trim();
if (path.IndexOf(".") >= 0)
{
path = path.Replace(".", "_") + ".dll";
}
else
{
path = "_" + path + ".dll";
}
MemoryStream inStream = new MemoryStream();
Stream stream2 = new FileStream(path, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[stream2.Length];
stream2.Read(buffer, 0, Convert.ToInt32(buffer.Length));
inStream.Write(buffer, 0, buffer.Length);
inStream.Seek(0L, SeekOrigin.Begin);
Compressor compressor = new Compressor();
return Assembly.Load(compressor.Decompress(inStream));
}
}
}
private void btnDecompress_Click(object sender, EventArgs e)
{
try
{
Assembly assembly = Assembly.LoadFile(txtAssemblyPath.Text);//加载指定程序集
if (assembly != null)
{
if (assembly.FullName.Contains("actmp,"))//看看是不是Sixxpack压缩过的程序集
{
Type compressorClass = assembly.GetType("Sixxpack.Compressor");//得到Compressor方法的类型
MethodInfo DecompressInfo = compressorClass.GetMethod("Decompress");//Decompress方法,供后面使用
int orig = Convert.ToInt32(assembly.GetType("Sixxpack.stub").GetField("orig", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null));//压缩后的程序集的偏移量,我虽然强烈怀疑就是0x8000,为了保险起见,还是反射出来吧。
#region 这段照抄Main方法的内容
MemoryStream inStream = new MemoryStream();
Stream stream2 = assembly.GetFiles()[0];//这么写就可以了
stream2.Position = orig;
byte[] buffer = new byte[stream2.Length - orig];
stream2.Read(buffer, 0, Convert.ToInt32(buffer.Length));
inStream.Write(buffer, 0, buffer.Length);
inStream.Seek(0L, SeekOrigin.Begin);
#endregion
byte[] data = (byte[])DecompressInfo.Invoke(Activator.CreateInstance(compressorClass), new object[] { inStream });//调用Decompress方法,获得原始程序集的数据
if (sfdAssembly.ShowDialog() == DialogResult.OK)
{
sfdAssembly.OpenFile().Write(data, 0, data.Length);//把数据保存到指定文件,OK,完工!
}
MessageBox.Show("文件解压成功!", "恭喜", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("未找到正确的程序集!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
else
{
MessageBox.Show("该文件没有程序集!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
转帖一篇sixxpack破解的文章!的更多相关文章
- sixxpack破解的文章!【转】
星期天闲着没事玩游戏,玩游戏不能无外挂.于是百度了半天,找到了一个,看介绍貌似不错,就下载了下来.一看,竟然是用.net写的,下意识地Reflector了一下.发现竟是一个叫actmp的程序集.如图: ...
- 《转载-两篇很好的文章整合》Android中自定义控件
两篇很好的文章,有相互借鉴的地方,整合到一起收藏 分别转载自:http://blog.csdn.net/xu_fu/article/details/7829721 http://www.cnblogs ...
- (转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)
干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码) 该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==& ...
- 给B公司的一些建议(又一篇烂尾的文章)
感慨:太多太多的悲伤故事,发生在自己身上,发生在自己的身边.因此,为了避免总是走"弯路",走"错误"的道路,最近一直在完善自己的理论模型. 烂尾说明:本文是一篇 ...
- 小鹏汽车技术中台实践 :微服务篇 InfoQ 今天 以下文章来源于InfoQ Pro
小鹏汽车技术中台实践 :微服务篇 InfoQ 今天 以下文章来源于InfoQ Pro
- 无线安全专题_破解篇02--kali破解pin码
最近项目有点紧,所以本应该上周发的文章,拖到了本周三,在此说声抱歉.无线安全专题,我打算系统地写六个部分,分别为破解篇,攻击篇,欺骗篇,路由篇,移动篇和蓝牙篇,当然在发布的过程中,可能还会掺杂着发布f ...
- [转帖]教你如何破解IC卡的校验值
教你如何破解IC卡的校验值 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin ...
- 转一篇dudu大人的文章:程序员,用NuGet管理好你的包包
每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...
- 关于ssh的一篇很好的文章
源地址:http://www.w3hacker.com/?p=156 ssh-agent的manual写得倒是挺详细,可看了好几次都没怎么搞明白.08年在网上找到了非常好的一篇文章,An Illu ...
随机推荐
- Identifier 'Logic.DomainObjectBase._isNew' is not CLS-compliant
http://stackoverflow.com/questions/1195030/why-is-this-name-not-cls-compliant To get around this err ...
- 准备开源一套异形UI控件
今天整理磁盘,发现在一个以前加密过的一个磁盘文件中发现了一些以前做的UI代码.平时都没怎么去用,放着放着只会慢慢的去遗忘,所以打算慢慢的将一些UI代码整理整理,然后开源出来,集合广大Delphier的 ...
- iis7下iis安全狗不能用怎么办(安装iis6兼容性)
is7下iis安全狗不能用怎么办 | 浏览:126 | 更新:2015-05-14 17:11 1 2 3 4 5 6 分步阅读 windows系统iis安全狗是常用的一款软件,针对网站使用很方便.在 ...
- 关于在mac 配置eclipse c开发
新建一个c 项目,如下 勾选hello world ANSL project ,勾选右边的MacOSX GCC 安装插件CDT - http://download.eclipse.org/tools/ ...
- vmware 无法打开内核设备 \\.\Global\vmx86: 系统找不到指定的文件
点击“开始→运行”,在运行框中输入 CMD 回车打开命令提示符,然后依次执行以下命令. net start vmci net start vmx86 net start VMnetuserif sc ...
- Promise 使用心得
this.testPromise=function(){ return new Promise(function(resolve,reject){ co ...
- 关于Android真机调测Profiler
U3D中的Profile也是可以直接在链接安卓设备运行游戏下查看的,导出真机链接U3D的Profile看数据,这样能更好的测试具体原因. 大概看了下官方的做法,看了几张帖子顺带把做法记录下来. ...
- OBS---环境配置之#include <D3DX10.h>报错
一.先贴错误 因为这个笔记主要记录我如何整好这个OBS源码环境的,给需要的童鞋一个参考 1.1.#include <D3DX10.h> 报错 没有这个 解决方案:把2,3先解决了就水到渠 ...
- WinForm 批量设置指定控件中的控件状态
在开发中常遇到当点击某个按钮的时候,禁用文本框或按钮的的状态,以防止误操作,下面的代码是我已批量设置指定控件中的按钮状态的代码,同理可以延伸出很多操作. /// <summary> /// ...
- Foundation和UIKit框架组织图
转自:http://fantom.iteye.com/blog/1776558