Tag Archives: patch

Sandboxie 中输入法切换导致stuck问题

Updated: 我感觉我找到解决方案了。在Wnd 里允许访问Wnd Class,然后测试就没有IME切换问题了,不需要其他任何设置。如下图所示(sandboxie-plus, v1.8.4), Apr 15, 2023

I’m pleased to say that I’ve found a solution that works. By enabling access to all Wnd Class, the CJK IME stuck in sandboxie issue has been resolved. I’m curious, though: was I the first to discover this solution? I’ve attached a screenshot below to show the necessary settings in Sandboxie-Plus. No additional settings are required.

enabling access to all Wnd Class in Sandboxie-plus, v1.8.4
Continue reading

如何从zcom的zmaker电子杂志中提取图片

需求大概是这么来的:一个毕业照相册用zmaker做成电子的了,看起来很cool,有动画,有同学们的靓照,年轻时也许不知道离别苦,二十年后某天听说某同学不在了,而手头只有这个电子杂志里的有唯一一张其照片,问遍能问的同学,居然都没有其他照片(那个海鸥相机象征身份的年代)。截图当然可行,但说实话分辨率很不理想,尤其原照片还是以前扫描的。所以有了这个需求。

环境:win 10,ZCOM互动杂志 1.0.1.2 (通过查看相册exe文件的属性信息)

方法:

  1. 打开zmaker的exe程序,不关,到 C:\Sandbox\<你的用户名>\test\user\current\AppData\Local\Temp\{一串数字和横线}\,注意时间戳(最新生成的),慢慢可以找到。
  2. 里面有很多文件夹,把这些文件夹拷贝出来,这些文件夹下面是一些main.swf,这个是flash动画,对应着电子杂志里的每一页。
  3. 到百度里搜索 swf extractor 的某个绿色版,打开,将需要的那个main.swf 打开,就可以看到里面的照片,提取出来,保存即可。

Done!

参考 http://blog.sina.com.cn/s/blog_3d8405d50100fplh.html,win10下有所不同。

Snip-It Pro 1.0.1.9

一个比较有意思的保存代码片断的东西。启动后位于桌面的一侧的sidebar,可以作用于任何编辑器。比如你在Visual studio写东西,可以从这里面将常用的一些代码方便的拉入vs中。官方网站在http://www.snipitpro.com/。下载的试用版本有30天试用期。

目前snipit pro工作于dotnet 2.0,除了dotfuscator保护关键代码外,还使用了一个的license保护组件(来自Interactive Studio Inc.)。license组件包括QlmLicenseLib.dll和IsLicense30.dll,后者是一个c++ native PE,前者由于调用后者,ildasm出来的il代码编译后无法通过ilasm使用。

然而问题是,snipit pro是保护十分脆弱,尽管dotfuscator使得reflector反编译后的代码无法编译,比如它将类里的方法名和变量名命名为一样,而c#编译器不允许这样。然后这种情况ilasm是可以编译的。反编译snipitpro.exe,可以看到以下类似代码:

        public aa(SnipItConfig A_0)
        {
            this.a = new QlmLicense();
            this.a.DefineProduct(1, "Snip-It Pro", 1, 0, "SkunkyFo78!", "{24EAA3C1-3DD7-40E0-AEA3-D20AA17A6005}");

            bool flag = false;
            string licenseKey = A_0.LicenseKey;
            this.a.ValidateLicense(licenseKey);
            int status = (int)this.a.GetStatus();
            if ((this.a(status, 8) || this.a(status, 0x10)) || ((this.a(status, 0x20)
                || this.a(status, 0x100)) || this.a(status, 0x80)))
            {
                flag = false;
                this.a(r.d);
            }
            else if (this.a(status, 4))
            {
                if (this.a(status, 0x40))
                {
                    this.a(r.b);
                    flag = false;
                }
                else
                {
                    this.a(r.a);
                    flag = true;
                }
            }
            else if (this.a(status, 2))
            {
                this.a(r.c);
                flag = true;
            }
            this.a(flag);
        }

关键在于status的判断,无论license key是如何被保护,只要status被设置为2,保护即被解除。

int status = (int) this.a.GetStatus();  对应的MSIL代码是,

IL_0045:  ldarg.0
IL_0046:  ldfld      class [QlmLicenseLib/*23000007*/]InteractiveStudios.QlmLicenseLib.QlmLicense/*010000F0*/ aa/*02000022*/::a /* 0400013B */
IL_004b:  callvirt   instance valuetype [QlmLicenseLib/*23000007*/]InteractiveStudios.QlmLicenseLib.ELicenseStatus/*010000F1*/ [QlmLicenseLib/*23000007*/]InteractiveStudios.QlmLicenseLib.QlmLicense/*010000F0*/::GetStatus() /* 0A000266 */
IL_0050:  stloc.2

我们注释掉 IL_0045~IL004b,在IL_004f处添加 ldc.i4.2,即达到以上status设置为2的效果。为了保证文件大小一致,0045~004e IL用nop来填充。修改后的MSIL代码如下,

    //IL_0045:  ldarg.0
    //IL_0046:  ldfld      class [QlmLicenseLib/*23000007*/]InteractiveStudios.QlmLicenseLib.QlmLicense/*010000F0*/ aa/*02000022*/::a /* 0400013B */
    //IL_004b:  callvirt   instance valuetype [QlmLicenseLib/*23000007*/]InteractiveStudios.QlmLicenseLib.ELicenseStatus/*010000F1*/ [QlmLicenseLib/*23000007*/]InteractiveStudios.QlmLicenseLib.QlmLicense/*010000F0*/::GetStatus() /* 0A000266 */
    IL_0045: nop
    IL_0046: nop
    IL_0047: nop
    IL_0048: nop
    IL_0049: nop
    IL_004a: nop
    IL_004b: nop
    IL_004c: nop
    IL_004d: nop
    IL_004e: nop
    IL_004f:    ldc.i4.2
    IL_0050:  stloc.2

Patch后的snip-it pro 1.0.1.9保护成功解除。在原SnipItpro.exe文件的0x0000d5b1开始的027b3b0100046f6602000a,代替成027b3b0100046f66020018,保存。

VisualSVN 1.3.2

最近VisualSVN 1.3.2出来了,trial是30天试用。Reflector反汇编分析了一下代码,采用了xor和md5公私密钥双重加密,由于无法知晓密钥(公钥在VisualSVN.VS.Interface.dll的资源public里),无法制作keygen。
找了几个切入点,都不理想,后来发现更改LicenseConverter.KeyToLicense是个不错的切入点,不管什么情况都产生一个有效的License。
       License l = new License();
       l.Binding = LicenseBinding.Seat;
       l.Capacity = 999;
       l.EndTime = DateTime.Now.AddYears(2);
       l.LicensedTo = "tong";
       l.LicenseId = Guid.NewGuid();
       l.PurchaseDate = DateTime.Now.AddDays(-10);
       l.PurchaseId = "shareit:1";
       l.StartTime = DateTime.Now.AddDays(-2);
       l.Type = LicenseType.Corporate;
       l.Version = 2;
简单测试了一下可用。

这里下载

Founder Apabi Reader 图书馆版 1.82

图书馆买了一年的方正电子图书帐号,检查一下,发现还是有一些相关的书。
Reader其实是个做的不错的软件,无论从功能上还是外观上,都很出色,而且下载借阅
的速度也很快。
试着下载了一本图书,发现只有3天的借期,到期需要续借,而且无法打印(我其实很
想将其打印成pdf保存)
google了一下,一下子也找不着,个别论坛提示说有解除限制的方法或crk,但论坛限
制太多,或者根本就是骗点击
试着将Reader.exe反汇编了一下,发现很多信息都是明码保存在exe里,作者好象没在
反反汇编上下功夫。
找到几处切入点(比如打印选项无效,比如提示不能打印,比如对pdf虚拟打印机无效
等),简单处理了一下,发现就可以了,只是打印出来的pdf有些大。然后试着写了一
个图形patch界面,附下。(好象有很多别人已经写好的专用于patch的小软件,但懒得
找了,反正用qt写很方便,只是出来的结果文件大些)
仅是学习试验了一下,本人不提供任何具体的crk信息

金山词霸2005序列号过期的问题

解决问题很简单:
在powerword 2005目录下找到NETWORK.ini,将里面的update下的url改成 一个不可访问的地址或非法的更新站点,比如 http://www.cngis.org/,保存。
重新打开powerword 2005,将此前提示过期的序列号再输入一次,即可重新使用。
另外,如果有防火墙,请打开,不要将powerword 2005访问网络,这样也可以解决这个问题。