zoukankan      html  css  js  c++  java
  • 破解typemock 流水账


    下载了typemock。却要我license。老子才不尿你。打开reflector开始破解。

    大概看了源码,主要是

    MockManager.Init() 里面调用了注册类。 bi.e()

    比较另类的验证机制。

    其他的TypeMock.Integration / Interceptors 似乎没有什么意义。

    找到IL里面的:

    .class public auto ansi sealed TypeMock.MockManager

           extends [mscorlib]System.Object

       .method public hidebysig static void  Init(bool collectAllCalls) cil managed

    具体内容:

    代码
        // 代码大小       149 (0x95)
        .maxstack  2
        .locals init (valuetype gk V_0)
        IL_0000:  call       valuetype gk gk::b()
        IL_0005:  stloc.
    0
        .
    try
        {
          IL_0006:  call       
    void bi::e()
          IL_000b:  ldsfld     
    string TypeMock.MockManager::i
          IL_0010:  ldsfld     
    string TypeMock.MockManager::h
          IL_0015:  call       int32 TypeMock.MockManager::SetEnvironmentVariable(
    string,
                                                                                  
    string)
          IL_001a:  pop
          IL_001b:  ldsfld     
    bool TypeMock.MockManager::z
          IL_0020:  brtrue.s   IL_0035

          IL_0022:  call       
    bool TypeMock.AutoFake.TyphoonConfiguration::IsInAutoFake()
          IL_0027:  brtrue.s   IL_0035

          IL_0029:  ldc.i4.
    1
          IL_002a:  stsfld     
    bool TypeMock.MockManager::z
          IL_002f:  call       valuetype hs g6::f()
          IL_0034:  pop
          IL_0035:  call       
    class ay TypeMock.MockManager::k()
          IL_003a:  callvirt   instance 
    void ay::a()
          IL_003f:  ldsfld     
    class dp TypeMock.MockManager::v
          IL_0044:  callvirt   instance 
    void dp::a()
          IL_0049:  ldsfld     
    class hf TypeMock.MockManager::w
          IL_004e:  callvirt   instance 
    void hf::a()
          IL_0053:  call       
    void TypeMock.RecorderManager::k()
          IL_0058:  ldarg.
    0
          IL_0059:  call       
    void TypeMock.MockManager::set_CollectAllCalls(bool)
          IL_005e:  ldc.i4.
    1
          IL_005f:  stsfld     
    bool TypeMock.MockManager::m
          IL_0064:  ldc.i4.
    0
          IL_0065:  stsfld     int32 TypeMock.MockManager::y
          IL_006a:  ldc.i4.
    0
          IL_006b:  stsfld     
    bool TypeMock.MockManager::o
          IL_0070:  call       
    void TypeMock.ExpectationBlock::a()
          IL_0075:  call       
    void TypeMock.MockManager::i()
          IL_007a:  call       
    void TypeMock.MockManager::j()
          IL_007f:  call       
    void f9::b()
          IL_0084:  leave.s    IL_0094

        }  
    // end .try
        finally
        {
          IL_0086:  ldloca.s   V_0
          IL_0088:  constrained. gk
          IL_008e:  callvirt   instance 
    void [mscorlib]System.IDisposable::Dispose()
          IL_0093:  endfinally
        }  
    // end handler
        IL_0094:  ret
      } 
    // end of method MockManager::Init

    关键地方是:

           IL_0006:  call       void bi::e()

    跨越了5个IL,那么添加nop就可以了。

  • 相关阅读:
    c# WinForm 定时执行某个后台操作 如把B文件夹下的文件Copy到A文件夹下
    c# 创建指定大小的空字符填充的文本文件 在指定位置读写相关内容
    c# DirectShow 通过IAMVideoProcAmp的Set方法 来设置视频图像的Brightness 调整亮度
    [转]灰度图像的腐蚀算法和细化算法(C#代码)
    利用fleximage实现图片上传
    利用acts_as_ferret实现全文检索
    纯CSS无hacks的跨游览器多列布局
    IE私有CSS样式属性一览
    利用thinking sphinx实现全文检索
    搭建rails运行环境
  • 原文地址:https://www.cnblogs.com/zc22/p/1671492.html
Copyright © 2011-2022 走看看