开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 52245|回复: 214

Aspose.Cells 17.7 for .NET 学习版

  [复制链接]

0

精华

0

贡献

5

赞扬

帖子
11
软币
163
在线时间
12 小时
注册时间
2015-2-21
发表于 2017-7-31 21:46:57 | 显示全部楼层 |阅读模式
本帖最后由 IORInet 于 2017-8-1 13:54 编辑

Aspose.Cells 17.7 for .NET 学习版(包括.net 2.0,3.5,4.0版本)通过几个小时的研究分析,直接修改IL代码从而不出现水印,并且重新进行了强名称签名,可以通过强名称验证

链接: http://pan.baidu.com/s/1dEE68aX
游客,如果您要查看本帖隐藏内容请回复




评分

参与人数 5赞扬 +5 收起 理由
psober + 1 赞一个
siukwan + 1 赞一个
CyberUser + 1 很给力
laolong + 1 很给力
goodmangis + 1 很给力

查看全部评分

回复

使用道具 举报

0

精华

486

贡献

4818

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
325
软币
19770
在线时间
4855 小时
注册时间
2013-8-28
发表于 2017-8-1 06:44:09 | 显示全部楼层
学习版不错.
回复

使用道具 举报

0

精华

1316

贡献

885

赞扬

版主

帖子
176
软币
8139
在线时间
1139 小时
注册时间
2013-6-10
发表于 2017-8-1 08:43:52 | 显示全部楼层
本帖最后由 goodmangis 于 2017-8-1 08:45 编辑

太好了。如果再加入Aspose.Words就更完美了!
回复

使用道具 举报

0

精华

15

贡献

512

赞扬

帖子
282
软币
6205
在线时间
922 小时
注册时间
2014-7-30
发表于 2017-8-1 09:16:04 | 显示全部楼层
非常感谢!但是如果,word,cad,pdf都能破解一下就好了
回复

使用道具 举报

0

精华

108

贡献

1204

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
184
软币
5364
在线时间
426 小时
注册时间
2013-6-9
发表于 2017-8-1 14:20:16 | 显示全部楼层
谢谢分享  学习使用看看 。。
回复

使用道具 举报

0

精华

0

贡献

0

赞扬

帖子
21
软币
146
在线时间
7 小时
注册时间
2016-11-16
发表于 2017-8-1 17:18:38 | 显示全部楼层
谢谢楼主   
回复

使用道具 举报

0

精华

588

贡献

113

赞扬

赞助者组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
62
软币
539
在线时间
39 小时
注册时间
2015-7-7
发表于 2017-8-2 16:12:28 | 显示全部楼层

学习版不错.
回复

使用道具 举报

0

精华

310

贡献

18

赞扬

帖子
350
软币
7023
在线时间
849 小时
注册时间
2013-6-8
发表于 2017-8-2 23:48:52 | 显示全部楼层
----------3qs!
回复

使用道具 举报

0

精华

0

贡献

211

赞扬

帖子
145
软币
5069
在线时间
967 小时
注册时间
2013-9-15
发表于 2017-8-3 08:51:41 | 显示全部楼层
这个是最新版本吗
回复

使用道具 举报

0

精华

0

贡献

0

赞扬

帖子
8
软币
128
在线时间
6 小时
注册时间
2014-8-9
发表于 2017-8-4 15:44:33 | 显示全部楼层
给力给力
给力给力
给力给力
回复

使用道具 举报

0

精华

0

贡献

5

赞扬

帖子
169
软币
1885
在线时间
275 小时
注册时间
2013-12-18
发表于 2017-8-6 19:17:15 | 显示全部楼层
谢谢分享  学习使用看看 。。
回复

使用道具 举报

0

精华

18

贡献

4564

赞扬

帖子
100
软币
13014
在线时间
1664 小时
注册时间
2015-6-30
发表于 2017-8-7 20:33:44 | 显示全部楼层
太好了,多谢!
回复

使用道具 举报

0

精华

941

贡献

1114

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
227
软币
8306
在线时间
1119 小时
注册时间
2013-6-8
发表于 2017-8-8 11:19:20 | 显示全部楼层
辛苦了感谢
回复

使用道具 举报

0

精华

98

贡献

53

赞扬

帖子
73
软币
598
在线时间
51 小时
注册时间
2013-8-28
发表于 2017-8-11 14:39:45 | 显示全部楼层
spire.office
回复

使用道具 举报

0

精华

0

贡献

211

赞扬

帖子
145
软币
5069
在线时间
967 小时
注册时间
2013-9-15
发表于 2017-8-11 17:25:00 | 显示全部楼层
能破解Aspose.Total_for_.NET_2017-7吗
回复

使用道具 举报

0

精华

0

贡献

211

赞扬

帖子
145
软币
5069
在线时间
967 小时
注册时间
2013-9-15
发表于 2017-8-11 17:29:22 | 显示全部楼层
How To:


    1.Add ModifyInMemory.cs to project

    2.Activate MemoryPatching in entry method of application:

    LicenseHelper.ModifyInMemory.ActivateMemoryPatching();

    Notes:
    - The "SetLicense"-method is invoked automatically for all assemblies !
    - MemoryPatch bypasses 1024bit RSA protection

    3.Compile project with option "Allow unsafe code"
    (=> Project-Properties > Build: Check according option!)


Notes:

    MemoryPatching is valid as long as the licensing does not change
    (If I remember right in the last years nothing has changed)

    ModifyInMemory.cs must be excluded from obfuscation

    No support for Silverlight because SL's mscorlib.dll does not include all methods/properties required for MemoryPatching
=================
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Xml;


namespace LicenseHelper
{
    public static class ModifyInMemory
    {
        private static string AsposeList = "Aspose.3D.dll, Aspose.BarCode.dll, Aspose.BarCode.Compact.dll, Aspose.BarCode.WPF.dll, Aspose.Cells.GridDesktop.dll, Aspose.Cells.GridWeb.dll, Aspose.CAD.dll, Aspose.Cells.dll, Aspose.Diagram.dll, Aspose.Email.dll, Aspose.Imaging.dll, Aspose.Note.dll, Aspose.OCR.dll, Aspose.Pdf.dll, Aspose.Slides.dll, Aspose.Tasks.dll, Aspose.Words.dll";

        public static void ActivateMemoryPatching()
        {
            Assembly[] arr = AppDomain.CurrentDomain.GetAssemblies();
            foreach (Assembly assembly in arr)
            {
                if (AsposeList.IndexOf(assembly.FullName.Split(',')[0] + ".dll") != -1)
                    ActivateForAssembly(assembly);
            }
            AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(ActivateOnLoad);
        }

        private static void ActivateOnLoad(object sender, AssemblyLoadEventArgs e)
        {
            if (AsposeList.IndexOf(e.LoadedAssembly.FullName.Split(',')[0] + ".dll") != -1)
                ActivateForAssembly(e.LoadedAssembly);
        }

        private static void ActivateForAssembly(Assembly assembly)
        {
            MethodInfo miLicensed1 = typeof(ModifyInMemory).GetMethod("InvokeMe1", BindingFlags.NonPublic | BindingFlags.Static);
            MethodInfo miLicensed2 = typeof(ModifyInMemory).GetMethod("InvokeMe2", BindingFlags.NonPublic | BindingFlags.Static);
            MethodInfo miEvaluation = null;

            Dictionary<string, MethodInfo> miDict = new Dictionary<string, MethodInfo>()
            {
                {"System.DateTime"      , miLicensed1},
                {"System.Xml.XmlElement", miLicensed2}
            };

            Type[] arrType = null;
            bool isFound = false;
            int nCount = 0;

            try
            {
                arrType = assembly.GetTypes();
            }
            catch (ReflectionTypeLoadException err)
            {
                arrType = err.Types;
            }


            foreach (Type type in arrType)
            {
                if (isFound) break;

                if (type == null) continue;

                MethodInfo[] arrMInfo = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Static);

                foreach (MethodInfo info in arrMInfo)
                {
                    if (isFound) break;

                    try
                    {
                        string strMethod = info.ToString();
                        if ((strMethod.IndexOf("(System.Xml.XmlElement, System.String)") > 0) && (miDict.ContainsKey(info.ReturnType.ToString())))
                        {
                            miEvaluation = info;
                            MemoryPatching(miEvaluation, miDict[miEvaluation.ReturnType.ToString()]);
                            nCount++;

                            if (((assembly.FullName.IndexOf("Aspose.Pdf") == -1) && (nCount == 2)) ||
                                ((assembly.FullName.IndexOf("Aspose.Pdf") != -1) && (nCount == 6)))
                            {
                                isFound = true;
                                break;
                            }
                        }
                    }
                    catch
                    {
                        throw new InvalidOperationException("MemoryPatching for \"" + assembly.FullName + "\" failed !");
                    }
                }
            }

            String[] aParts = assembly.FullName.Split(',');
            string fName = aParts[0];
            if (fName.IndexOf("Aspose.BarCode.") != -1)
                fName = "Aspose.BarCode";
            else if (fName.IndexOf("Aspose.3D") != -1)
                fName = "Aspose.ThreeD";

            try
            {
                Type type2 = assembly.GetType(fName + ".License");
                MethodInfo mi = type2.GetMethod("SetLicense", new Type[] { typeof(Stream) });
                string LData = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPExpY2Vuc2U+CiAgPERhdGE+CiAgICA8TGljZW5zZWRUbz5MaWNlbnNlZTwvTGljZW5zZWRUbz4KICAgIDxFbWFpbFRvPmxpY2Vuc2VlQGVtYWlsLmNvbTwvRW1haWxUbz4KICAgIDxMaWNlbnNlVHlwZT5EZXZlbG9wZXIgT0VNPC9MaWNlbnNlVHlwZT4KICAgIDxMaWNlbnNlTm90ZT5MaW1pdGVkIHRvIDEwMDAgZGV2ZWxvcGVyLCB1bmxpbWl0ZWQgcGh5c2ljYWwgbG9jYXRpb25zPC9MaWNlbnNlTm90ZT4KICAgIDxPcmRlcklEPjc4NDM3ODU3Nzg1PC9PcmRlcklEPgogICAgPFVzZXJJRD4xMTk3ODkyNDM3OTwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q+QXNwb3NlLlRvdGFsIFByb2R1Y3QgRmFtaWx5PC9Qcm9kdWN0PgogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOdW1iZXI+e0YyQjk3MDQ1LTFCMjktNEIzRi1CRDUzLTYwMUVGRkExNUFBOX08L1NlcmlhbE51bWJlcj4KICAgIDxTdWJzY3JpcHRpb25FeHBpcnk+MjA5OTEyMzE8L1N1YnNjcmlwdGlvbkV4cGlyeT4KICAgIDxMaWNlbnNlVmVyc2lvbj4zLjA8L0xpY2Vuc2VWZXJzaW9uPgogIDwvRGF0YT4KICA8U2lnbmF0dXJlPlFYTndiM05sTGxSdmRHRnNJRkJ5YjJSMVkzUWdSbUZ0YVd4NTwvU2lnbmF0dXJlPgo8L0xpY2Vuc2U+";
                Stream stream = new MemoryStream(Convert.FromBase64String(LData));
                stream.Seek(0, SeekOrigin.Begin);
                mi.Invoke(Activator.CreateInstance(type2, null), new Stream[] { stream });
            }
            catch
            {
                throw new InvalidOperationException("SetLicense for \"" + assembly.FullName + "\" failed !");
            }

        }


        private static DateTime InvokeMe1(XmlElement element, string name)
        {
            return DateTime.MaxValue;
        }


        private static XmlElement InvokeMe2(XmlElement element, string name)
        {
            if (element.LocalName == "License")
            {
                string License64 = "PERhdGE+PExpY2Vuc2VkVG8+R3JvdXBEb2NzPC9MaWNlbnNlZFRvPjxMaWNlbnNlVHlwZT5TaXRlIE9FTTwvTGljZW5zZVR5cGU+PExpY2Vuc2VOb3RlPkxpbWl0ZWQgdG8gMTAgZGV2ZWxvcGVyczwvTGljZW5zZU5vdGU+PE9yZGVySUQ+MTMwNzI0MDQwODQ5PC9PcmRlcklEPjxPRU0+VGhpcyBpcyBhIHJlZGlzdHJpYnV0YWJsZSBsaWNlbnNlPC9PRU0+PFByb2R1Y3RzPjxQcm9kdWN0PkFzcG9zZS5Ub3RhbDwvUHJvZHVjdD48L1Byb2R1Y3RzPjxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT48U2VyaWFsTnVtYmVyPjliNTc5NTAxLTUyNjEtNDIyMC04NjcwLWZjMmQ4Y2NkZDkwYzwvU2VyaWFsTnVtYmVyPjxTdWJzY3JpcHRpb25FeHBpcnk+MjAxNDA3MjQ8L1N1YnNjcmlwdGlvbkV4cGlyeT48TGljZW5zZVZlcnNpb24+Mi4yPC9MaWNlbnNlVmVyc2lvbj48L0RhdGE+PFNpZ25hdHVyZT5udFpocmRoL3I0QS81ZFpsU2dWYnhac0hYSFBxSjZ5UVVYa0RvaW4vS2lVZWhUUWZET0lQdHdzUlR2NmRTUVplOVdXekNnV3RGdkdROWpmR2QySmF4YUQvbkx1ZEk2R0VVajhqeVhUMG4vbWRrMEF1WVZNYlBXRjJYd3dSTnFlTmRrblYyQjhrZVFwbDJ2RzZVbnhxS2J6VVFxS2Rhc1pzZ2w1Q0xqSFVEWms9PC9TaWduYXR1cmU+";
                element.InnerXml = new UTF8Encoding().GetString(Convert.FromBase64String(License64));
            }

            if (element.LocalName == "BlackList")
            {
                string BlackList64 = "PERhdGE+PC9EYXRhPjxTaWduYXR1cmU+cUJwMEx1cEVoM1ZnOWJjeS8vbUVXUk9KRWZmczRlY25iTHQxYlNhanU2NjY5RHlad09FakJ1eEdBdVBxS1hyd0x5bmZ5VWplYUNGQ0QxSkh2RVUxVUl5eXJOTnBSMXc2NXJIOUFyUCtFbE1lVCtIQkZ4NFMzckFVMnd6dkxPZnhGeU9DQ0dGQ2UraTdiSHlGQk44WHp6R1UwdGRPMGR1RTFoRTQ5M1RNY3pRPTwvU2lnbmF0dXJlPg==";
                element.InnerXml = new UTF8Encoding().GetString(Convert.FromBase64String(BlackList64));
            }

            XmlNodeList elementsByTagName = element.GetElementsByTagName(name);
            if (elementsByTagName.Count <= 0)
            {
                return null;
            }

            return (XmlElement)elementsByTagName[0];
        }


        private static unsafe void MemoryPatching(MethodBase miEvaluation, MethodBase miLicensed)
        {
            IntPtr IntPtrEval = GetMemoryAddress(miEvaluation);
            IntPtr IntPtrLicensed = GetMemoryAddress(miLicensed);

            if (IntPtr.Size == 8)
                *((long*)IntPtrEval.ToPointer()) = *((long*)IntPtrLicensed.ToPointer());
            else
                *((int*)IntPtrEval.ToPointer()) = *((int*)IntPtrLicensed.ToPointer());

        }


        private static unsafe IntPtr GetMemoryAddress(MethodBase mb)
        {
            RuntimeHelpers.PrepareMethod(mb.MethodHandle);

            if ((Environment.Version.Major >= 4) || ((Environment.Version.Major == 2) && (Environment.Version.MinorRevision >= 3053)))
            {
                return new IntPtr(((int*)mb.MethodHandle.Value.ToPointer() + 2));
            }

            UInt64* location = (UInt64*)(mb.MethodHandle.Value.ToPointer());
            int index = (int)(((*location) >> 32) & 0xFF);
            if (IntPtr.Size == 8)
            {
                ulong* classStart = (ulong*)mb.DeclaringType.TypeHandle.Value.ToPointer();
                ulong* address = classStart + index + 10;
                return new IntPtr(address);
            }
            else
            {
                uint* classStart = (uint*)mb.DeclaringType.TypeHandle.Value.ToPointer();
                uint* address = classStart + index + 10;
                return new IntPtr(address);
            }
        }
    }
}
//End

回复

使用道具 举报

0

精华

5

贡献

45

赞扬

帖子
92
软币
954
在线时间
101 小时
注册时间
2014-2-27
发表于 2017-8-12 12:00:56 | 显示全部楼层
不错,支持以下,我也试试做个
回复

使用道具 举报

0

精华

0

贡献

20

赞扬

帖子
2
软币
167
在线时间
8 小时
注册时间
2014-9-16
发表于 2017-8-12 19:15:28 | 显示全部楼层
Thanks very much
回复

使用道具 举报

0

精华

0

贡献

14

赞扬

帖子
148
软币
638
在线时间
56 小时
注册时间
2013-6-17
发表于 2017-8-18 08:52:26 | 显示全部楼层
谢谢楼主的劳动
回复

使用道具 举报

0

精华

0

贡献

86

赞扬

帖子
38
软币
579
在线时间
58 小时
注册时间
2015-12-31
发表于 2017-8-19 12:04:25 | 显示全部楼层
谢谢楼主的劳动
回复

使用道具 举报

0

精华

0

贡献

12

赞扬

帖子
44
软币
519
在线时间
76 小时
注册时间
2015-12-25
发表于 2017-8-19 13:28:05 | 显示全部楼层
study thank you!
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-11-21 22:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表