mirror of
https://github.com/Vita3K/unicorn.git
synced 2024-11-27 15:20:42 +00:00
.. | ||
msvc_mem_apis | ||
msvc_sample_arm | ||
msvc_sample_arm64 | ||
msvc_sample_m68k | ||
msvc_sample_mips | ||
msvc_sample_sparc | ||
msvc_sample_x86 | ||
msvc_shellcode | ||
msvc.sln | ||
README.TXT |
:: Notes about Visual Studio versions. These solution and project files were created using Visual Studio 2012. They should be able to be opened in newer versions of Visual Studio. For older versions of Visual Studio you could try a little hack of changing the line in the solution file "msvc.sln" from: Microsoft Visual Studio Solution File, Format Version 12.00 to Microsoft Visual Studio Solution File, Format Version 11.00 Or whatever version number your Visual Studio version uses. (Hint: Check an existing solution file you have created with your version of Visual Studio to know what this value is expected to be.) Also note that all instructions below are for Visual Studio 2012. So if you are using a different version then the settings may be located in different areas or have different names. :: Notes about the building the sample projects The projects have 32bit (win32) and 64bit (x64) target platforms. The 32bit platform (win32) will create a 32bit app that can run on either 32bit or 64bit Windows. The 64bit platform (x64) can only run on 64bit Windows. All variants can be built at once by using the batch build function: Go to "Build -> Batch Build" and tick all checkboxes, or at least the ones that you wish to build. Then click on the Build or Rebuild button. Note that when building the "staload" projects you must first have built the static import libraries as mentioned above. The samples projects all come preset to be built using dynamic loading of the unicorn dlls. If you wish to use static loading of the unicorn dlls then you need see the next section. :: Using static linking of dlls It is possible to perform static linking of the unicorn dlls which will load and import the dlls when the exe file itself is loaded. Personally I prefer dynamic loading in which you load the dlls in your program code at runtime. This way if it fails you have the opportunity to display a more meaning error message. Dynamic loading also gives you more advanced options for where to load the dll files from. If you do wish to do static linking of dlls then the following changes need to be made to each project. Note that multiple projects can be highlighted and have their settings changed at the one time. 1) First ensure the static linking library has been built. Run bindings\msvc\make_staload.bat to build these. You may need to first alter this batch file to point to the correct location of your "vcvars32.bat" file. If successful you will now have the files "bindings\msvc\unicorn_staload.lib" and "bindings\msvc\unicorn_staload64.lib". 2) Go to the Solution Explorer window in Visual Studio. You can use "View -> Solution Explorer" to get to it. 3) Highlight one or more projects that you want to change to use static linking. Use hold control when selecting to select multiples, or hold Shift to select ranges of projects. 4) Right click on the selected projects and go to Properties. 5) Now go to "Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions". Remove the DYNLOAD entry and its preceeding semi-colon. You will need to remove DYNLOAD for both Debug and Release configurations. You can change between configurations on the top left of the Property Pages dialog box that you are currently on. 6) Click OK when done and then rebuild the altered projects. Be sure to Rebuild and not just Build to ensure that the change you made are used. :: Running the samples When running the samples they will need to be able to load the unicorn dlls. The unicorn dlls required for 32bit apps are: libgcc_s_dw2-1.dll libglib-2.0-0.dll libiconv-2.dll libintl-8.dll libwinpthread-1.dll unicorn.dll The unicorn dlls required for 64bit apps are: libgcc_s_seh-1.dll libglib-2.0-0.dll libiconv-2.dll libintl-8.dll libwinpthread-1.dll unicorn.dll Note that while some of the 32bit and 64bit dlls have the same filename, they are internally different in that they are either 32bit or 64bit files themselves. So you will have to have separate directories to store them in. I suggest using directory names such as "unicorn32" and "unicorn64" when installing the prebuilt windows binaries. This will make it easy to differentiate between them. If running the sample exe files from the command line or from Windows Explorer then you need ensure that the exe file is in the same directory as either the 32bit or 64bit set of dlls. To run the samples from inside Visual Studio so that you can debug them or just easily test various changes you should set the working directory to point to a directory that contains all of the dlls. Assuming you are running a 32bit app and have the 32bit unicorn dlls in the directory "C:\unicorn32" then do: 1) Go to the Solution Explorer window in Visual Studio. You can use "View -> Solution Explorer" to get to it. 2) Highlight one or more projects that you want to run/debu from in Visual Studio. Use hold control when selecting to select multiples, or hold Shift to select ranges of projects. 3) Right click on the selected projects and go to Properties. 4) Now go to "Configuration Properties -> Debugging -> Working Directory". Change the value for this to "C:\unicorn32". You will need to change this for both Debug and Release configurations. You can change between configurations on the top left of the Property Pages dialog box that you are currently on. 6) Click OK when done and then you are ready to run or debug the projects. Do "Debug -> Start Debugging" or press F5 to debug the current project. Do "Debug -> Start Without Debugging" or press Ctrl+F5 to run the current project. You can change the current project by right clicking on a project in Solution Explorer and selecting "Set as StartUp Project"