Welcome to wo1f.net! Come back soon for more content as I will be adding content daily for a while.
Where is Visual Studio located?
It is not immediately obvious where the location of the IDE Executable is for Visual Studio, however they all follow the same format so if you can find one you can find the others.
C:\Program Files (x86)\Microsoft Visual Studio XXX\Common7\IDE
2005 – 8.0
2008 – 9.0
2010 – 10.0
2012 – 11.0
2015 – 14.0
If you are using Express, you are looking for WDExpress.exe and if you have Visual Studio Pro/Ultimate you are looking for devenv.exe
The location of C:\Program Files (x86)\Microsoft Visual Studio XXX\ is also home to many programmer relevant tools to aid in software development.
If you have individual Express IDEs they will be located in
C:\Program Files (x86)\Microsoft Visual Studio XXX\YY
Where YY is your individual language folder. You will also be looking for YYExpress.exe in this location.
C++ – VC
C# – VC#
VB.Net – VB
Some smooth progressive house/chillstep
Song: Odesza – Say My Name (feat. Zyra)
Who does this affect?
Windows users who have received Microsoft Update KB3114409 and use Microsoft Outlook 2010. Seems to be mostly the users with 32 bit Microsoft Office on 64 bit machines.
What is happening? How can I know if I am affected?
Outlook 2010 displays an error regarding Safe Mode and is unusable.
How to fix?
Microsoft recommends to uninstall the KB114409 update and reboot in order to fix this bug.
A potentially faster method to fix this was submit on Reddit by user Trulyvexed.
December 9 I applied this fix as a group policy object to ensure that in the event this glitch occurs again, it will be automatically fixed upon rebooting.
- Open Registry Editor (regedit.exe) as Administrator
- Open Navigate to HKEY_LOCAL_MACHINE (HKLM)
- Navigate to the registry path of HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Outlook\Security
- Create a new Registry Key named DisableSafeMode of type sz_DWORD
- Assign new key value to 1 as Decimal
- Repeat steps 3-5 but with the path HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Outlook\Security
- Fully close Outlook and ensure it is not running
- Open Outlook to find that the glitch is gone
Copy of original post for reference:
Who is this for?
Software Engineers, .Net Developers, hobbyists.
What does the title mean?
By dynamic application variables I am referring to having an easy string-lookup class to manage data. It is dynamic due to allowing any datatype that inherits from Object which is perfect for Object Oriented Programming (OOP).
C# (see-SHARP): C-Based .Net language
.Net (DOT-net): Microsoft Programming framework. .Net Applications get assembled into MSIL(Microsoft Intermediate Language) instead of into a Native Application
.Net Languages: C#, Visual Basic, F#, J#, Iron Python, Visual C++
What am I talking about?
My Vars.cs class (written in C#) Available here. Code is not the prettiest but it is very effective.
What can this be used for?
Creating scripting languages (variable inception), dynamic code logic, string based client variables with any data allowed for values.
Real examples of how this can be utilized?
Stopwatches, Command Lists, Console/Text commands, IntelliSense functionality, caching accessed file data as raw data or a Type.
Code usage examples
Vars.Add("Stopwatch", DateTime.Now); //code logic to benchmark here TimeSpan timeDifference = DateTime.Now.Subtract((DateTime)Vars.Get("Stopwatch")); int elapsedMS = (int)timeDifference.TotalMilliseconds;
Vars.Add("a", 0); Vars.Set("a", 1); Vars.Set("a", Vars.GetI("a" + 1)); Vars.Set("b", Vars.Get("a")); Vars.Set("dataList", new List<object>()); List<object> dataList = (List<object>)Vars.Get("dataList");
The code is efficient (not flawless) but it is able to perform well in extremely quick reaction situations and even in multithreaded situations (although this was NOT made fully thread-safe). I used Vars as a stopwatch for a Socket class and it was able to work even when the variable was set and checked 1ms apart from two threads for dozens of Sockets at the same time.
What can be learned from this code?
Dictionary<string, object> is the container for the variables. With this simple concept you can do just about anything you want for variables or have any combination of them, even combinations that barely make sense.
The beauty in.Net and how this is even possible is that every Type is an Object and Object can contain object. The end result is that an object can be any combination of data structures or classes. .Net also keeps track of what Type the Object originally was, allowing you to ask “if(Vars.Get(“variable”) is Dog)”
With typecasting and proper use of Parenthesis ( ) you can more easily access complicated datasets without making copies or additional variables.
With this simple method of dynamic memory allocation you now have a powerful tool in your code-belt. Read and analyze the code and it should help in learning some abstract programming concepts. Go out and
Soon after writing this class I made a very similar class but instead of string based variables it was string based Events. I use it for Socket commands so I can simply do:
That function will then call OnCommand with extra data containing the packet information. I will likely post about that full class another time.
.Net is an extremely powerful framework and the provided code can be executed in any other .Net language. The class itself provides vast functionality due to its simplicity and using the same programming concepts in this class on other projects may help developers in creating shortcuts for themselves. Sometimes the best solution is the simple one.
Additional Easter Egg
- A long time ago in a galaxy far far away
NOTE: The following image was not created by me, is not my property in any way, and is not hosted on my website. I do not take ANY credit for this image and am simply providing a helpful link. I cannot find the origin of this image anyway.
As anyone who has taken a look at Form.Designer in Visual Studio knows, Form creation and Controls are all created at runtime with code. With this knowledge, it becomes possible to create your own forms dynamically at runtime as well, or even just modify the Form.
Adding default blank Form
Form child = new Form(); child.Text = "New Child Form"; child.TopLevel = false; this.Controls.Add(child); child.Parent = this; child.Show();
Adding default Form1 to self
Form1 child = new Form1(); child.Text = "New Child Form"; child.TopLevel = false; this.Controls.Add(child); child.Parent = this; child.Show();
The important section of this code is actually where Toplevel is set. If you do not set Toplevel to false, your code will throw an Exception.
You can copy the raw code from here
How to use
Command CMD = new Command(); CMD.Register(new CommandDelegate("commandString", functionName)); //OR You can call it static and CMD will not be required. Your choice Command.Register(new CommandDelegate("commandString", functionName));
CMD.Process(commandString, objData); //OR if you want to do it static Command.Process(commandString, objData);
- Register callback commands
- Associate Functions with Strings
- Passes along an Object for information so it can contain any amount or combination of data due to custom classes
- Any Event
- Events for Debugging purposes
- Console Commands
- String based commands and arguments
- Scripting Language
- Many more!
Code snippet available for copy here
The code snippet is self documenting and will specify what failed or if it succeeded. Simply use any of the InjectDLL functions.
I recommend using any of these
public InjectRet InjectByProcessName(string strDLLName, string strProcessName) public InjectRet InjectDLL(string fileName, Process Process)
public InjectRet InjectDLL(IntPtr hProcess, string strDLLName)
This was converted to C# by me from C++ from a blog post in 2008 and therefore may or may not be under GPL 3.0. Since the post has likely been deleted at this point, I have no way of knowing.
Wo1f Injector Lite v2.5
- Multi-DLL Injection
- Reflex Injection
- Closes after reflex injection
- Saves settings
- Manual Injection (Numpad 0)
- Process List
- Next/Previous Process for same name
- Single core friendly
- Detailed Process Info
- Copy Process Info
- Compatible with all operating systems with .Net Framework 2.0
- Click on a Process in the List to select it and view its information
- Double click on a process or window in the list in order to set that as the target process
- If you can view the process information you can likely inject. If you see an error, try the other bit version
- To add a DLL right click on the DLL list on the left
- To inject manually press Numpad 0 key
- 64 bit is not supported yet
- If you see Access Denied while looking at a process do not expect to be able to inject into it. Try though, it may work.
- Written entirely in C#
- I wrote the C# Injection function based on a C++ Dll Injection method
- Net Framework 2.0 Official Download
- Wo1f_Injector_Common.dll (provided in zip with the software)