1/2/2024 0 Comments Readwrite github for beginners![]() It is definitely easier to pass on to somebody else. I also like the idea of using the SWITCH formula to manage which folders are displayed. Ideally, if creating this solution from scratch, I would probably have started each folder with a prefix indicating which area it belonged to, therefore avoiding the need for the SWITCH formula. =SORT(QUERY(IMPORTRANGE("/spreadsheets/d/./edit","Sheet2!A:D"),"SELECT Col1,Col4,Col3 WHERE Col4 is NOT NULL"),2,FALSE) With this addition column, I then used a QUERY to capture the title, area and link to present as a directory in a separate spreadsheet to share with a wider audience: "ICON General Information","General Information", "End of Year 2020 - eHR & Payroll Guide","eHR", I then copied this list into the SWITCH formula and added in the commas: =IFNA(SWITCH(B1:B, Once I had these two columns complete, I used this formula to add quotation marks to them all: =ArrayFormula(""""&Sheet1!A:D&"""") After culling the list, I then added the area in the cell next to each folder. To create the SWITCH, I created a UNIQUE list of all the folders and then pasted them as values so that I could delete those not required to be displayed in the directory. Therefore to manage this, I used a SWITCH formula to create a new column updating the folder name to the overall area it belonged to. Therefore, it had become manual heavy exercise to refresh the data and update the directory meaning it did not happen that regularly.Īfter looking at the list and the current finished product and the list produced using File Cabinet, I realised that rather than displaying the sub-folder, that the directory was showing a top level folder. In addition to that, there were some folders and files listed that needed to be removed. Whereas the output focused on file, folder and link, the list produced using File Cabinet included other information such as owner, creation date and file size. The problem with this list is that the exported data was not in the desired format. The current workflow involved using an Add-on File Cabinet from the developers behind Awesome Table to generate a list. This folder also included a number of folders within folders, which created a level of complexity. ![]() ![]() PS.I was recently asked to have a look at spreadsheet that listed all the guides and videos located in a support folder as a reference. In the future I will try to figure out more advanced code injection techniques. If you want you can also add function call obfuscation like this post. ![]() It seems our simple injection logic worked! This is just a simplest way to inject a DLL to another process but in many cases it is sufficient and very useful. To verify our DLL is indeed injected into calc.exe process we can use Process Hacker. Let’s first launch a calc.exe instance and then execute our program: X86_64-w64-mingw32-gcc -O2 evil_inj.cpp -o inj.exe -mconsole -I/usr/share/mingw-w64/include/ -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc -fpermissive >/dev/null 2>&1 So finally after we understood entire code of the injector, we can test it. The only difference is we add path of our DLL from disk (1) and before we finally inject and run our DLL - we need a memory address of LoadLibraryA, as this will be an API call that we will execute in the context of the victim process to load our DLL (2): So exe need a main function and DLL’s need DLLMain functionīasically that’s the simplest difference.įor simplicity, we create DLL which just pop-up a message box:īOOL APIENTRY DllMain ( HMODULE hModule, DWORD nReason, LPVOID lpReserved ) On the other hand with the DLL’s when you want to run your program as a dynamic library, it’s a slighty different way, so the loader has already created process in memory and for some reason that process needs your DLL or any other DLL to be load it into the process and it might be due to the function your DLL implements. At this point your program starts its execution when the OS loader finishes its job. In exe case there should be a function called main which is being called by the OS loader when it finishes all in initialization if a new process. The basic difference is how you call you code in your module or program. There are slight difference in writing C code for exe and DLL. In this post we will discuss about a classic DLL injection technique which are use debugging API.Ībout classic code injection I wrote in this post. This post is a Proof of Concept and is for educational purposes only.Īuthor takes no responsibility of any damage you cause. Hello, cybersecurity enthusiasts and white hackers!
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |