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的程序集.如图: ...
- 安利一波:Adobe 2019全家桶 破解版
之前发过一篇Photoshop破解的文章,今天把笔记本换了个系统,发现之前那个amtlib.dll替换破解的方式不适用于最新版的Adobe 2019 CC系列了,刚好看到群里有大佬分享了一个全家桶,给 ...
- 软件破解入门(暴力破解CrackMe)
---恢复内容开始--- 所谓暴力破解,就是通过修改汇编代码进而控制程序的运行流程,达到不需注册码也能正常使用软件的目的.相对于解出算法进而编写注册机,暴破的技术含量是比较低的.但也正是因为一本05年 ...
- (转)Win7 64位系统下 Retional rose 2003 安装及破解
网上关于Retional rose 2003安装和破解的文章比较多,这里,我结合自己的亲身体验,和大家分享一下win7 旗舰版 64位系统下Retional rose 2003(下面简称rose200 ...
- VB 共享软件防破解设计技术初探(一)
VB 共享软件防破解设计技术初探(一) ×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(二)http ...
- WiFi密码破解详细图文教程
每天都能看到有不少网友在回复论坛之前发布的一篇破解WiFi密码的帖子,并伴随各种疑问.今天流云就为大家准备一篇实战型的文章吧,详细图文从思维CDlinux U盘启动到中文设置,如何进行路由SSID扫描 ...
- Win7 64位系统下 Retional rose 2003 安装及破解
网上关于Retional rose 2003安装和破解的文章比较多,这里,我结合自己的亲身体验,和大家分享一下win7 旗舰版 64位系统下Retional rose 2003(下面简称rose200 ...
- android黑科技系列——静态分析技术来破解Apk
一.前言 从这篇文章开始我们开始我们的破解之路,之前的几篇文章中我们是如何讲解怎么加固我们的Apk,防止被别人破解,那么现在我们要开始破解我们的Apk,针对于之前的加密方式采用相对应的破解技术,And ...
- 用python暴力破解压缩文件并不是万能,至少这个场景我告诉你密码你用代码也破解不了
看到论坛上各种贴子写用python进行暴力破解的文章,于是自己也想去尝试一下,不试不知道,一试吓一跳,真的就像那句有名的”python由入门到放弃“,把论坛上别人的脚本全部自己敲一遍,运行不报错,但也 ...
随机推荐
- java 随机日期
java 在某个范围日期内获取一个日期,再以这个日期作为开始日期,获取到随机n天后的日期 /** * 在beginDate和endDate之间获取一个随机日期作为开始日期 * @param begin ...
- Java中的static关键字的用法
1.静态方法 static:通常在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: (1)它们仅能调用其他的static方法. (2 ...
- .net程序调试一:快速定位异常
作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重 ...
- Objective-C之成魔之路【13-预处理程序】
郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠.支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 预处理提供 ...
- 深入讲解Android Property机制
深入讲解Android Property机制 侯亮 1 概述 Android系统(本文以Android 4.4为准)的属性(Property)机制有点儿类似Windows系统的注册表,其中的 ...
- ios笔记一(面向对象编程)
#import <Foundation/Foundation.h> #import "Person.h" int main (int argc, const char ...
- Understanding The Linux Virtual Memory Manager
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.588.4660&rep=rep1&type=pdf http://e ...
- cancas绘制折线图
知识点回顾: 知识点1: measureText() 方法返回包含一个对象,该对象包含以像素计的指定字体宽度. 提示:如果您需要在文本向画布输出之前,就了解文本的宽度,那么请使用该方法. JavaSc ...
- jQuery图片tab栏切换
<script> $(function(){ $('.tab li').mouseenter(function(){ var $this=$(this); var index=$this. ...
- feignclient设置hystrix参数
序 feign默认集成了hystrix,那么问题来了,如何像hystrix command那样设置每个方法的hystrix属性呢. 实例 @FeignClient("product" ...