首页
社区
课程
招聘
[旧帖] [求助]这个软件该如何破解呢? 0.00雪花
发表于: 2011-4-11 10:30 2778

[旧帖] [求助]这个软件该如何破解呢? 0.00雪花

2011-4-11 10:30
2778
大家好!小弟需要破解一个软件,用PEiD软件分析的结果如下图,已经知道了入口点,并且是快速校验已加壳,剩下的该如何破解呢?小弟是菜鸟,请各位帮忙!!

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (26)
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你只给这点信息,你让我们情何以堪?
2011-4-11 10:42
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
用Reflector 分析,找關鍵點,,
2011-4-11 12:52
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢楼上的二位。 因为太菜,所以不知道该提供什么信息,我试着用OLLYDbg进行破解,可是实在是看不懂,还得请教大家,请帮忙!  当试着输入注册码000000后,提示失败,取消了进城,得到下列信息:



请大家帮忙1
上传的附件:
2011-4-11 17:21
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
是.NET啊。你用OD調試?一般脫殼我才用
2011-4-11 20:04
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不懂用reflector,先查资料,稍后再请教!谢谢了!!
2011-4-13 13:40
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
如果是混淆的話,你還是要努力
2011-4-13 14:00
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
用reflector的Disassemble得到下列信息:

// Assembly mscorlib, Version 2.0.0.0

[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyDefaultAlias("mscorlib.dll")]
[assembly: AllowPartiallyTrustedCallers]
[assembly: AssemblyCompany("Microsoft Corporation")]
[assembly: AssemblyDescription("mscorlib.dll")]
[assembly: AssemblyTitle("mscorlib.dll")]
[assembly: CLSCompliant(true)]
[assembly: ComVisible(false)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility]
[assembly: AssemblyKeyFile(@"f:\RTM\Tools\devdiv\EcmaPublicKey.snk")]
[assembly: AssemblyProduct("Microsoft\x00ae .NET Framework")]
[assembly: DefaultDependency(LoadHint.Always)]
[assembly: TypeLibVersion(2, 0)]
[assembly: ComCompatibleVersion(1, 0, 0xce4, 0)]
[assembly: Guid("BED7F4EA-1A96-11d2-8F08-00A0C9A6186D")]
[assembly: StringFreezing]
[assembly: AssemblyDelaySign(true)]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: SatelliteContractVersion("2.0.0.0")]
[assembly: AssemblyInformationalVersion("2.0.50727.42")]
[assembly: AssemblyFileVersion("2.0.50727.42")]
[assembly: AssemblyCopyright("\x00a9 Microsoft Corporation.  All rights reserved.")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification=true)]

该如何下手呢?
2011-4-13 14:36
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用reflector diassembler 得到下列信息,大家帮忙看看啊
namespace CommServer
{
    using Microsoft.VisualBasic.CompilerServices;
    using Microsoft.Win32;
    using System;
    using System.IO;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;

    public class CMyRegistry
    {
        public static bool CreateSubKey(string sKey, KeyName key = -2147483646)
        {
            bool flag;
            try
            {
                RegistryKey key2;
                if (key == KeyName.HKEY_CLASSES_ROOT)
                {
                    key2 = Registry.ClassesRoot.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_CURRENT_USER)
                {
                    key2 = Registry.CurrentUser.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_LOCAL_MACHINE)
                {
                    key2 = Registry.LocalMachine.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_USERS)
                {
                    key2 = Registry.Users.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_CURRENT_CONFIG)
                {
                    key2 = Registry.CurrentConfig.CreateSubKey(sKey);
                }
                flag = key2 != null;
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception ex = exception1;
                m_Base.ExceptionProcess(ex, "", true, m_Base.enumLogUint.Month);
                ProjectData.ClearProjectError();
            }
            return flag;
        }

        public static string GetValue(string sRegistrykey, string sDefaultValue = "", KeyName key = -2147483646)
        {
            string str;
            try
            {
                RegistryKey key2;
                string directoryName = Path.GetDirectoryName(sRegistrykey);
                string fileName = Path.GetFileName(sRegistrykey);
                if (key == KeyName.HKEY_CLASSES_ROOT)
                {
                    key2 = Registry.ClassesRoot.CreateSubKey(directoryName);
                }
                else if (key == KeyName.HKEY_CURRENT_USER)
                {
                    key2 = Registry.CurrentUser.CreateSubKey(directoryName);
                }
                else if (key == KeyName.HKEY_LOCAL_MACHINE)
                {
                    key2 = Registry.LocalMachine.CreateSubKey(directoryName);
                }
                else if (key == KeyName.HKEY_USERS)
                {
                    key2 = Registry.Users.CreateSubKey(directoryName);
                }
                else if (key == KeyName.HKEY_CURRENT_CONFIG)
                {
                    key2 = Registry.CurrentConfig.CreateSubKey(directoryName);
                }
                if (key2 == null)
                {
                    return "";
                }
                object objectValue = RuntimeHelpers.GetObjectValue(key2.GetValue(fileName));
                if (objectValue == null)
                {
                    str = sDefaultValue;
                }
                else
                {
                    str = objectValue.ToString();
                }
                key2.Close();
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception ex = exception1;
                m_Base.ExceptionProcess(ex, "", true, m_Base.enumLogUint.Month);
                ProjectData.ClearProjectError();
            }
            return str;
        }

        public static bool SetValue(string sKey, object value, KeyName key = -2147483646)
        {
            bool flag;
            try
            {
                RegistryKey key2;
                string fileName = Path.GetFileName(sKey);
                sKey = Path.GetDirectoryName(sKey);
                if (key == KeyName.HKEY_CLASSES_ROOT)
                {
                    key2 = Registry.ClassesRoot.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_CURRENT_USER)
                {
                    key2 = Registry.CurrentUser.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_LOCAL_MACHINE)
                {
                    key2 = Registry.LocalMachine.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_USERS)
                {
                    key2 = Registry.Users.CreateSubKey(sKey);
                }
                else if (key == KeyName.HKEY_CURRENT_CONFIG)
                {
                    key2 = Registry.CurrentConfig.CreateSubKey(sKey);
                }
                if (key2 == null)
                {
                    return false;
                }
                key2.SetValue(fileName, RuntimeHelpers.GetObjectValue(value));
                flag = true;
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception ex = exception1;
                m_Base.ExceptionProcess(ex, "", true, m_Base.enumLogUint.Month);
                ProjectData.ClearProjectError();
            }
            return flag;
        }

        public enum KeyName
        {
            HKEY_CLASSES_ROOT = -2147483648,
            HKEY_CURRENT_CONFIG = -2147483644,
            HKEY_CURRENT_USER = -2147483647,
            HKEY_LOCAL_MACHINE = -2147483646,
            HKEY_USERS = -2147483645
        }
    }
}

怎么分析能够得出注册码呢?
2011-4-13 15:55
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
另外一个文件的信息

namespace CommServer
{
    using Microsoft.VisualBasic;
    using Microsoft.VisualBasic.CompilerServices;
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Runtime.CompilerServices;
    using System.Windows.Forms;

    [DesignerGenerated]
    public class FrmID : Form
    {
        private static ArrayList __ENCList = new ArrayList();
        [AccessedThroughProperty("btn_Cancel")]
        private Button _btn_Cancel;
        [AccessedThroughProperty("btn_OK")]
        private Button _btn_OK;
        [AccessedThroughProperty("Lab_ID")]
        private Label _Lab_ID;
        [AccessedThroughProperty("Label1")]
        private Label _Label1;
        [AccessedThroughProperty("Label3")]
        private Label _Label3;
        [AccessedThroughProperty("txt_ID")]
        private TextBox _txt_ID;
        private IContainer components;
        private bool m_bPass;
        private string s_ID;

        public FrmID(string s)
        {
            base.Load += new EventHandler(this.FrmID_Load);
            __ENCList.Add(new WeakReference(this));
            this.m_bPass = false;
            this.s_ID = s;
            this.InitializeComponent();
        }

        private void btn_Cancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btn_OK_Click(object sender, EventArgs e)
        {
            if (this.txt_ID.Text == "")
            {
                Interaction.MsgBox("请输入软件运行许可!", MsgBoxStyle.Information, "提醒");
                this.txt_ID.Focus();
            }
            else if (this.txt_ID.Text == m_Base.xlhtoyzm(this.Lab_ID.Text))
            {
                this.m_bPass = true;
                CMyRegistry.SetValue(m_Declare.g_sRegistryPath + @"\LicID", this.txt_ID.Text, CMyRegistry.KeyName.HKEY_LOCAL_MACHINE);
                this.Close();
                this.Dispose();
            }
            else
            {
                Interaction.MsgBox("软件运行码不正确,请与软件开发商联系!", MsgBoxStyle.Information, "提醒");
                this.m_bPass = false;
                this.txt_ID.Focus();
            }
        }

        [DebuggerNonUserCode]
        protected override void Dispose(bool disposing)
        {
            if (disposing && (this.components != null))
            {
                this.components.Dispose();
            }
            base.Dispose(disposing);
        }

        private void FrmID_Load(object sender, EventArgs e)
        {
            this.Lab_ID.Text = m_Base.GetMacID();
            this.txt_ID.Text = this.s_ID;
        }

        [DebuggerStepThrough]
        private void InitializeComponent()
        {
            this.Label1 = new Label();
            this.Lab_ID = new Label();
            this.Label3 = new Label();
            this.btn_OK = new Button();
            this.btn_Cancel = new Button();
            this.txt_ID = new TextBox();
            this.SuspendLayout();
            this.Label1.AutoSize = true;
            Point point = new Point(0x25, 0x24);
            this.Label1.Location = point;
            this.Label1.Name = "Label1";
            Size size = new Size(0x41, 12);
            this.Label1.Size = size;
            this.Label1.TabIndex = 0;
            this.Label1.Text = "软件生成ID";
            this.Lab_ID.AutoSize = true;
            this.Lab_ID.Font = new Font("宋体", 9f, FontStyle.Bold, GraphicsUnit.Point, 0x86);
            this.Lab_ID.ForeColor = Color.Red;
            point = new Point(130, 0x24);
            this.Lab_ID.Location = point;
            this.Lab_ID.Name = "Lab_ID";
            size = new Size(0, 12);
            this.Lab_ID.Size = size;
            this.Lab_ID.TabIndex = 1;
            this.Label3.AutoSize = true;
            point = new Point(0x25, 0x4e);
            this.Label3.Location = point;
            this.Label3.Name = "Label3";
            size = new Size(0x41, 12);
            this.Label3.Size = size;
            this.Label3.TabIndex = 2;
            this.Label3.Text = "软件使用ID";
            point = new Point(0x27, 0x79);
            this.btn_OK.Location = point;
            this.btn_OK.Name = "btn_OK";
            size = new Size(0x4b, 0x17);
            this.btn_OK.Size = size;
            this.btn_OK.TabIndex = 3;
            this.btn_OK.Text = "确定";
            this.btn_OK.UseVisualStyleBackColor = true;
            point = new Point(0xc3, 0x79);
            this.btn_Cancel.Location = point;
            this.btn_Cancel.Name = "btn_Cancel";
            size = new Size(0x4b, 0x17);
            this.btn_Cancel.Size = size;
            this.btn_Cancel.TabIndex = 4;
            this.btn_Cancel.Text = "取消";
            this.btn_Cancel.UseVisualStyleBackColor = true;
            point = new Point(0x84, 0x4b);
            this.txt_ID.Location = point;
            this.txt_ID.Name = "txt_ID";
            size = new Size(100, 0x15);
            this.txt_ID.Size = size;
            this.txt_ID.TabIndex = 5;
            SizeF ef = new SizeF(6f, 12f);
            this.AutoScaleDimensions = ef;
            this.AutoScaleMode = AutoScaleMode.Font;
            size = new Size(0x12e, 0xa5);
            this.ClientSize = size;
            this.Controls.Add(this.txt_ID);
            this.Controls.Add(this.btn_Cancel);
            this.Controls.Add(this.btn_OK);
            this.Controls.Add(this.Label3);
            this.Controls.Add(this.Lab_ID);
            this.Controls.Add(this.Label1);
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "FrmID";
            this.StartPosition = FormStartPosition.CenterScreen;
            this.Text = "请输入软件运行许可码";
            this.ResumeLayout(false);
            this.PerformLayout();
        }

        public bool bPass
        {
            get
            {
                return this.m_bPass;
            }
        }

        internal virtual Button btn_Cancel
        {
            [DebuggerNonUserCode]
            get
            {
                return this._btn_Cancel;
            }
            [MethodImpl(MethodImplOptions.Synchronized), DebuggerNonUserCode]
            set
            {
                if (this._btn_Cancel != null)
                {
                    this._btn_Cancel.Click -= new EventHandler(this.btn_Cancel_Click);
                }
                this._btn_Cancel = value;
                if (this._btn_Cancel != null)
                {
                    this._btn_Cancel.Click += new EventHandler(this.btn_Cancel_Click);
                }
            }
        }

        internal virtual Button btn_OK
        {
            [DebuggerNonUserCode]
            get
            {
                return this._btn_OK;
            }
            [MethodImpl(MethodImplOptions.Synchronized), DebuggerNonUserCode]
            set
            {
                if (this._btn_OK != null)
                {
                    this._btn_OK.Click -= new EventHandler(this.btn_OK_Click);
                }
                this._btn_OK = value;
                if (this._btn_OK != null)
                {
                    this._btn_OK.Click += new EventHandler(this.btn_OK_Click);
                }
            }
        }

        internal virtual Label Lab_ID
        {
            [DebuggerNonUserCode]
            get
            {
                return this._Lab_ID;
            }
            [MethodImpl(MethodImplOptions.Synchronized), DebuggerNonUserCode]
            set
            {
                this._Lab_ID = value;
            }
        }

        internal virtual Label Label1
        {
            [DebuggerNonUserCode]
            get
            {
                return this._Label1;
            }
            [MethodImpl(MethodImplOptions.Synchronized), DebuggerNonUserCode]
            set
            {
                this._Label1 = value;
            }
        }

        internal virtual Label Label3
        {
            [DebuggerNonUserCode]
            get
            {
                return this._Label3;
            }
            [MethodImpl(MethodImplOptions.Synchronized), DebuggerNonUserCode]
            set
            {
                this._Label3 = value;
            }
        }

        internal virtual TextBox txt_ID
        {
            [DebuggerNonUserCode]
            get
            {
                return this._txt_ID;
            }
            [MethodImpl(MethodImplOptions.Synchronized), DebuggerNonUserCode]
            set
            {
                this._txt_ID = value;
            }
        }
    }
}
2011-4-13 15:57
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
给我个软件的下载地址,虽然我也是个新手 呵呵
2011-4-13 16:16
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
软件在这里,谢谢大家!
上传的附件:
2011-4-14 15:08
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
簡單說一下怎樣使用,呵呵呵
2011-4-14 21:14
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
你換需要去掉這個IP  211.138.113.56
2011-4-14 21:29
0
雪    币: 167
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
很熟悉的语言 可惜代码太多

注意下这里吧

          else if (this.txt_ID.Text == m_Base.xlhtoyzm(this.Lab_ID.Text))
            {
                this.m_bPass = true;
                CMyRegistry.SetValue(m_Declare.g_sRegistryPath + @"\LicID", this.txt_ID.Text, CMyRegistry.KeyName.HKEY_LOCAL_MACHINE);
                this.Close();
                this.Dispose();
            }
2011-4-14 21:36
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
现在既然能够看到了注册方式的引导,那么你需要做的就是一步一步的来就好了,论坛里有破解的成熟例子,换汤不换药的按照步骤往下走就好,你还好了,得到了程序判断注册的片段,我现在还是两眼一抹黑呢
2011-4-15 01:33
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
將代碼複製到vs環境,調試就知道了
2011-4-15 08:00
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
各位前辈,我用refelctor已经反编译得出了源码,可是我对这些源码再重新进行编译想生成exe文件时,出现了很多的报错,这是为什么?如何解决呢? 请前辈详细说明!

谢谢了!!
2011-4-16 20:34
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
1,混淆了,你需要手工修改非法字符到常用的字符。(類,方法,函數,變量)

2,資源也混淆了,需要查找替換。

3,注意強簽名。

4,注意資源文件是否超過 2千以上。
2011-4-16 21:04
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
大家帮忙看一下,下面这段程序是什么意思?谢谢了
public static string xlhtoyzm(string xh)
        {
            string str;
            try
            {
                string str2;
                int length = xh.Length;
                for (int i = 1; i <= length; i++)
                {
                    string inputStr = Strings.Mid(xh, i, 1);
                    switch (i)
                    {
                        case 1:
                            str2 = str2 + Conversions.ToString((double) (Conversion.Val(inputStr) + 1.0));
                            break;

                        case 2:
                            str2 = str2 + Conversions.ToString(Math.Pow(Conversion.Val(inputStr), 2.0));
                            break;

                        case 3:
                            str2 = str2 + Conversions.ToString((double) (Conversion.Val(inputStr) * 8.0));
                            break;

                        case 4:
                            str2 = str2 + Conversions.ToString((double) (Conversion.Val(inputStr) + 5.0));
                            break;

                        case 5:
                            str2 = str2 + Conversions.ToString(Math.Pow(Conversion.Val(inputStr), 3.0));
                            break;

                        case 6:
                            str2 = str2 + Conversions.ToString((double) (Conversion.Val(inputStr) * 2.0));
                            break;
                    }
                }
                str = str2.Substring(str2.Length - 6, 6);
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                ProjectData.ClearProjectError();
            }
            return str;
        }
2011-4-18 11:02
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
你现在最起码还有代码可供参考,我现在还在汇编的苦海里奔波,呵呵~
2011-4-18 20:51
0
雪    币: 7905
活跃值: (3081)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
貌似你这个就是注册码部分啊,看命名xlhtoyzm不就是   序列号到验证码  么
2011-4-22 00:01
0
雪    币: 500
活跃值: (865)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
看看,了解一下
2011-4-22 19:17
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
上面这段程序我调试不通啊,大家能否帮忙下!
2011-4-27 12:07
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习,支持一下。从未接触过类似的技术!
2011-4-27 12:13
0
游客
登录 | 注册 方可回帖
返回
//