(mono)In MAC call FiddlerApplication.Startup(8889, FiddlerCoreStartupFlags.Default) throw EntryPointNotFoundException

8 posts, 0 answers
  1. 拳儿
    拳儿 avatar
    5 posts
    Member since:
    Sep 2014

    Posted 11 Sep 2014 Link to this post

    the Exception info:


    {System.TypeInitializationException: An exception was thrown by the type initializer for Fiddler.Proxy ---> System.EntryPointNotFoundException: GetTickCount64
      at (wrapper managed-to-native) Fiddler.Utilities:GetTickCount64 ()
      at Fiddler.Utilities.GetTickCount () [0x00000] in <filename unknown>:0 
      at Fiddler.PeriodicWorker+taskItem..ctor (Fiddler.SimpleEventHandler oTask, UInt32 iPeriod) [0x00000] in <filename unknown>:0 
      at Fiddler.PeriodicWorker.assignWork (Fiddler.SimpleEventHandler workFunction, UInt32 iMS) [0x00000] in <filename unknown>:0 
      at Fiddler.PipePool..ctor () [0x00000] in <filename unknown>:0 
      at Fiddler.Proxy..cctor () [0x00000] in <filename unknown>:0 
      --- End of inner exception stack trace ---
      at Fiddler.FiddlerApplication.Startup (Int32 iListenPort, FiddlerCoreStartupFlags oFlags) [0x00000] in <filename unknown>:0 
    Data: Count=0
    HResult: -2146233087
    HelpLink: (null)
    InnerException: {System.EntryPointNotFoundException: GetTickCount64
      at (wrapper managed-to-native) Fiddler.Utilities:GetTickCount64 ()
      at Fiddler.Utilities.GetTickCount () [0x00000] in <filename unknown>:0 
      at Fiddler.PeriodicWorker+taskItem..ctor (Fiddler.SimpleEventHandler oTask, UInt32 iPeriod) [0x00000] in <filename unknown>:0 
      at Fiddler.PeriodicWorker.assignWork (Fiddler.SimpleEventHandler workFunction, UInt32 iMS) [0x00000] in <filename unknown>:0 
      at Fiddler.PipePool..ctor () [0x00000] in <filename unknown>:0 
      at Fiddler.Proxy..cctor () [0x00000] in <filename unknown>:0 }
    Message: "An exception was thrown by the type initializer for Fiddler.Proxy"
    Source: "FiddlerCore4"
    StackTrace: "  at Fiddler.FiddlerApplication.Startup (Int32 iListenPort, FiddlerCoreStartupFlags oFlags) [0x00000] in <filename unknown>:0 \n  at
    TargetSite: {Void Startup(Int32, Fiddler.FiddlerCoreStartupFlags)}
    TypeName: "Fiddler.Proxy"
    Static members: 
    Non-public members: 
  2. Eric Lawrence
    Admin
    Eric Lawrence avatar
    833 posts

    Posted 11 Sep 2014 Link to this post

    Thanks for the report!

    What build number of FiddlerCore are you using? Did you try to use the Windows version of FiddlerCore instead of the Mono-specific version?

    The current code uses if !MONO blocks around all of the GetTickCount64 code so that it is never called on Mono.


    Regards,
    Eric Lawrence
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
  3. 拳儿
    拳儿 avatar
    5 posts
    Member since:
    Sep 2014

    Posted 11 Sep 2014 in reply to Eric Lawrence Link to this post

    it's work in windows, but throw EntryPointNotFoundException in mac, version is fiddlercore 4.4.8.4, I added a compilation symbols "MONO", still throw 
  4. 拳儿
    拳儿 avatar
    5 posts
    Member since:
    Sep 2014

    Posted 11 Sep 2014 in reply to Eric Lawrence Link to this post

    This is the version of the problem,I change to FiddlerCoreMono 4.4.5.3 it's work.
    4.4.8.4 it's from Xamarin Studio NUGET, There may be a problem
  5. 拳儿
    拳儿 avatar
    5 posts
    Member since:
    Sep 2014

    Posted 11 Sep 2014 Link to this post

    A new problem, I want change ReplyWithTunnel at HTTPS session, so this code:

    if (oSession.HTTPMethodIs("CONNECT"))
    {
    oSession.oFlags["X-ReplyWithTunnel"] = "https://www.xxxxxx.xxx";//change ReplyWithTunnel
    }
    else if (oSession.isHTTPS)
    {
    .....
    }

    in mac safari it's not work, the safari return "can not connect proxy server", but this code work in windows



  6. Eric Lawrence
    Admin
    Eric Lawrence avatar
    833 posts

    Posted 12 Sep 2014 Link to this post

    Interesting... I'm not sure why Xamarin Studio is pulling Windows-only packages, but I know very little about NuGet.

    In terms of your question, more information is needed. Without you attempting to modify traffic, is your code able to see HTTPS protected traffic? If not, then the most likely explanation is that your code is not properly generating the required interception certificates. You should attach the event handlers shown in the \demo\program.cs application to watch for any error messages:

    Fiddler.FiddlerApplication.OnNotification += delegate(object sender, NotificationEventArgs oNEA) { Console.WriteLine("** NotifyUser: " + oNEA.NotifyString); };
    Fiddler.FiddlerApplication.Log.OnLogString += delegate(object sender, LogEventArgs oLEA) { Console.WriteLine("** LogString: " + oLEA.LogString); };



    Regards,
    Eric Lawrence
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
  7. 拳儿
    拳儿 avatar
    5 posts
    Member since:
    Sep 2014

    Posted 13 Sep 2014 in reply to Eric Lawrence Link to this post

    I load references from http://ericlawrence.com/dl/monofiddlercore_2453.zip,
    BCMakeCert.dll 2.0.3.0
    CertMaker.dll 2.4.5.0
    FiddlerCore.dll 4.4.5.3

    create cert code:

    if (!Fiddler.CertMaker.createRootCert())
    throw new InvalidOperationException("createRootCert failed");
    if (!Fiddler.CertMaker.trustRootCert())
    throw new InvalidOperationException("trustRootCert failed");

    console:

    ** LogString: fiddler.network.availability.change> Network Available: True
    ** LogString: NetworkAddressChanged.
    ** LogString: Fiddler ICertificateProvider v2.4.5.0 loaded.
    fiddler.certmaker.bc.Debug: False
    Thread finished:  #111
    ** LogString: Fiddler.BCCertMaker> Failed to create certificate for localhost: Improperly protected user's key pairs in '/Users/xxx/.config/.mono/keypairs'.
      at Mono.Security.Cryptography.KeyPairPersistence.get_UserPath () [0x000f2] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs:237 
      at Mono.Security.Cryptography.KeyPairPersistence.get_Filename () [0x0007b] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs:141 
      at Mono.Security.Cryptography.KeyPairPersistence.Load () [0x00000] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs:167 
      at System.Security.Cryptography.RSACryptoServiceProvider.Common (System.Security.Cryptography.CspParameters p) [0x0000c] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:113 
      at System.Security.Cryptography.RSACryptoServiceProvider..ctor (Int32 dwKeySize, System.Security.Cryptography.CspParameters parameters) [0x00023] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:85 
      at System.Security.Cryptography.RSACryptoServiceProvider..ctor (System.Security.Cryptography.CspParameters parameters) [0x00000] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:68 
      at CertMaker.BCCertMaker.ConvertBCPrivateKeyToDotNet (Org.BouncyCastle.Crypto.Parameters.RsaPrivateCrtKeyParameters bcPVK, System.String sKeyName) [0x00000] in <filename unknown>:0 
      at CertMaker.BCCertMaker.CreateCertificateFromCA (System.String sCN, Org.BouncyCastle.X509.X509Certificate caCert, Org.BouncyCastle.Crypto.AsymmetricKeyParameter caKey) [0x00000] in <filename unknown>:0 
      at CertMaker.BCCertMaker.MakeNewCert (System.String sHostname) [0x00000] in <filename unknown>:0 



    in windows it's work,in mac it's not work, how create cert and trust?

  8. Eric Lawrence
    Admin
    Eric Lawrence avatar
    833 posts

    Posted 15 Sep 2014 Link to this post

    Hi,

    Unfortunately, the exception shown here is coming from Mono; I cannot reproduce this problem on any of my machines, so I'm afraid you'll either need to research or talk to the Mono team about how to address the problem.

    Improperly protected user's key pairs in '/Users/xxx/.config/.mono/keypairs'.
      at Mono.Security.Cryptography.KeyPairPersistence.get_UserPath () [0x000f2] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs:237
     

    My assumption is that this error message is trying to say that the access control list on the "keypairs" file isn't secure (e.g. allowing other users to read it, perhaps). But I have never encountered this problem and don't know how to fix it.

    Regards,
    Eric Lawrence
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
Back to Top