管家婆A8破解教程

作者:root 时间:24-04-18 阅读数:372人阅读

说起。Net程序的破解来网上的教程很多,尤其是对加强壳的程序,我这里的这篇教程可能都不算什么,因为管家婆的加密从第一代起就完全是粗放式的代码几乎和源码没有区别,而现在各种破解工具的完善,基本没有人会直接用编译器编完程序就发布了,就连一些破解软件的作者也出于各种目的对破解补丁进行加壳。为了防止被滥用,为了保护自己的劳动成果,为了追求经济利益。总之授人以鱼不如授人以渔,本篇教程的目的就是为了教你怎么制作自己的破解补丁。需要有一点编程经验。

需要准备的工具.NET Reflector 8.3Reflexil 1.7插件大家自行百度安装。

本次破解以管家婆A8 TOP 9.2为例,其他类似程序参考

.NET Reflector打开A8程序目录bin下的CarpaServer.dll

图片1.png

 

找到CarpaServer.Dog依次打开DogInfo .ctor()

在右侧看到代码如下

 

 

 

 

 

 

 

 

public DogInfo()
{
    this.strDogID = string.Empty;
    this.strDogType = string.Empty;
    this.strUserCardNo = string.Empty;
    this.strRegClientName = string.Empty;
    this.strRegFlag = string.Empty;
    this.strDogRegionName = string.Empty;
    this.strDogRegionCode = string.Empty;
    this.strFirstUseDate = string.Empty;
    this.strRegDate = string.Empty;
    this.strBrainPower = "00";
    this.strIpLimit = "01";
    this.intAccountNumber = 5;
    this.intDogUserCount = 0;
    this.intDogSymbol = -1;
    this.ifDogValid = 0;
    this.isUseAcSystem = string.IsNullOrEmpty(ConfigurationManager.AppSettings["demoAccount"]) ? 1 : 0;
    this.CentificateNo = string.Empty;
    this.CentificateNum = string.Empty;
    this.remainDay = 0;
    this.isTopDog = "0";
    this.CorpTel = string.Empty;
    this.Mobil = string.Empty;
    this.EMail = string.Empty;
}

点击.NET Reflector 菜单的Tool选择Reflexil 1.7

在代码的下面就会出现Reflexil IL代码编辑器,然后懂IL汇编的人就可以修改了。选中相应的IL代码行右键选择Edit进行修改编辑。

大多数用户对IL这种代码不熟悉也不了解,编辑起来有些吃力,Reflexil 给我们提供了另一种编程体验,就是直接使用C#或者vb.net编辑

IL代码编辑器右键选择Replace all with code

 图片2.png

弹出代码编辑窗

然后你就可以像在VS里面编程一样随意编写代码,替换原先的程序

比如我是这样写的

using System;
using System.Configuration;
namespace CarpaServer.Dog
{
    public class DogInfo : ICloneable
    {
        public string strDogRegionName;
        public string strDogRegionCode;
        public string strDogID;
        public string strDogType;
        public string strFirstUseDate;
        public string strRegDate;
        public string strUserCardNo;
        public string strRegClientName;
        public string strRegFlag;
        public string strBrainPower;
        public string strIpLimit;
        public int intAccountNumber;
        public int intDogUserCount;
        public int intDogSymbol;
        public int ifDogValid;
        public int isUseAcSystem;
        public string CentificateNo;
        public string CentificateNum;
        public int remainDay;
        public string isTopDog;
        public string CorpTel;
        public string Mobil;
        public string EMail;
        public DogInfo()
        {
            this.strDogID = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["DogID"]) ? "12345678901234" : Convert.ToString(ConfigurationManager.AppSettings["DogID"]));
            this.strDogType = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["DogType"]) ? "01" : Convert.ToString(ConfigurationManager.AppSettings["DogType"]));
            this.strUserCardNo = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["UserCardNo"]) ? "12345678901234" : Convert.ToString(ConfigurationManager.AppSettings["UserCardNo"]));
            this.strRegClientName = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["RegClientName"]) ? "成都任我行软件股份有限公司批量许可版" : Convert.ToString(ConfigurationManager.AppSettings["RegClientName"]));
            this.strRegFlag = "TR";
            this.strDogRegionName = "";
            this.strDogRegionCode = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["DogRegionCode"]) ? "01" : Convert.ToString(ConfigurationManager.AppSettings["DogRegionCode"]));
            this.strFirstUseDate = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["FirstUseDate"]) ? "2012-08-08" : Convert.ToString(ConfigurationManager.AppSettings["FirstUseDate"]));
            this.strRegDate = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["RegDate"]) ? "2012-08-08" : Convert.ToString(ConfigurationManager.AppSettings["RegDate"]));
            this.strBrainPower = "00";
            this.strIpLimit = "01";
            this.intAccountNumber = 100;
            this.intDogUserCount = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["DogUserCount"]) ? 50 : Convert.ToInt32(ConfigurationManager.AppSettings["DogUserCount"]));
            this.intDogSymbol = 5;
            this.ifDogValid = 1;
            this.isUseAcSystem = 1;
            this.CentificateNo = "20080006";
            this.CentificateNum = "2008TO2018";
            this.remainDay = 0;
            this.isTopDog = "0";
            this.CorpTel = "010-64014567";
            this.Mobil = "13901618088";
            this.EMail = "gosun@12388.com";
        }
        object ICloneable.Clone()
        {
            return this.Clone();
        }
        public DogInfo Clone()
        {
            return (DogInfo)base.MemberwiseClone();
        }
    }
}

 

编写完了以后可以使用编辑窗最下面的compile按钮进行编译,如果没有错误右侧会出现编译好的IL代码,这时候点击IL编辑窗下面的OK按钮保存修改结果

图片3.png 

 

可以参照上面的办法修改回传信息,常见的一些IP地址和网址需要翻看代码,或者抓包获得,这里就不讨论了。

代码修改完了以后并不能立刻看到结果我们需要在.NET Reflector左侧的程序列表里找到刚刚打开的CarpaServer右键 选择Reflexil 1.7 Save as保存修改。

然后就可以用新修改的补丁去测试了。懂编程的朋友都知道我这个是修改的自定义版本的,使用了web.config里面的配置参数。如果想正常使用还要配置一下web.config。好了教程完毕,欢迎讨论。

图片4.png


本文链接:http://17xinrui.com/?id=6 

分享到: