Giter Site home page Giter Site logo

x64dbg / dotx64dbg Goto Github PK

View Code? Open in Web Editor NEW
192.0 192.0 23.0 2.62 MB

x64Dbg plugin that enables C# plugins with hot-loading support and scripting.

License: MIT License

C++ 52.26% C# 47.74%
csharp dotnet hot-reload managed-plugins plugins scripting x64dbg x64dbg-plugin

dotx64dbg's Issues

Setup - Missing Dependancies

Excited about this project.

Installed both of the requirements linked to in the log, but still getting this error message.

Unable to load Dotx64Dbg, make sure you have following installed:
- .NET 6.0 Runtime (https://dotnet.microsoft.com/download/dotnet/6.0)
- Visual Studio 2019 Runtime (https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0)

I've also clone the repo and was able to successfully build it.

Both x86 and x64
Screenshot from 2023-03-10 17-56-02
Screenshot from 2023-03-10 17-55-22

Running x64dbg version snapshot_2023-03-04_02-26

Here is my placement of the plugin files:

Screenshot from 2023-03-10 17-51-39
Screenshot from 2023-03-10 17-51-26

Am I missing something?

Potential race condition on menu registration

One thing that I noticed is the dictionary used in the menu system should probably be a ConcurrentDictionary (not sure) because sometimes when calling ReloadPlugin here:

ReloadPlugin(plugin, plugin.AssemblyPath, token);
It can throw an exception like ArgumentException or NullReferenceException like:

image

or even deadlock the application at startup. I also, for testing, added a Thread.Sleep(100) before calling ReloadPlugin, and seems to "solve" the problem. That's why I think I could be a concurrency problem

Originally posted by @Guila767 in #48 (comment)

Dependencies are not loaded

When I use the command the first time I run x64dbg, I get an error:

Exception: System.MissingMethodException: Method not found: 'System.Collections.Immutable.ImmutableArray`1<Microsoft.Diagnostics.Runtime.ClrInfo> Microsoft.Diagnostics.Runtime.DataTarget.get_ClrVersions()'. 
   at DotInfo.Plugin.Init(String[] args) 
   at Dotx64Dbg.Plugins.<>c__DisplayClass44_0.<RegisterPluginCommand>b__0(String[] args) 
   at Dotx64Dbg.Commands.CommandHandler(String cmd, Int32 argc, IntPtr ptr) 
   at Dotx64Dbg.Commands.<>c__DisplayClass8_0.<Register>b__0(Int32 argc, IntPtr argv)

The error disappears if you add a couple of spaces in the source code to run hotreload.
After reloading x64dbg, the error reappears until you run hotreload through adding spaces...
P.S "Microsoft.Diagnostics.Runtime.DataTarget.get_ClrVersions" is a method from the nuget package.

Add more examples

  • Evaluate an expression
  • Format a format string
  • Get/set comments/labels/bookmarks
  • Breakpoint callback plugin
  • Adding packages from NuGet
  • Adding a folder with source files

Cache plugin builds

Currently each plugin is built every startup, it should instead use a cached build when available.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.