aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authormattifestation <mattgraeber@gmail.com>2014-11-16 10:26:11 -0500
committermattifestation <mattgraeber@gmail.com>2014-11-16 10:26:11 -0500
commit956e4c968a1795d868e35fcb72311704d616cbaf (patch)
treeca962602b87d3a7c89b6d864f6e17c541eb3cce2 /README.md
parent97034006f63f2691cde8ddb1055b1253c6f93cce (diff)
downloadPowerSploit-956e4c968a1795d868e35fcb72311704d616cbaf.tar.gz
PowerSploit-956e4c968a1795d868e35fcb72311704d616cbaf.zip
Moving all RE functionality to PowerShellArsenal
https://github.com/mattifestation/PowerShellArsenal PowerSploit will now stay true to its roots of being a purely offensive PowerShell module.
Diffstat (limited to 'README.md')
-rw-r--r--README.md100
1 files changed, 8 insertions, 92 deletions
diff --git a/README.md b/README.md
index 0358930..ed32e05 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
-### PowerSploit is a collection of Microsoft PowerShell modules that can be used to aid reverse engineers, forensic analysts, and penetration testers during all phases of an assessment. PowerSploit is comprised of the following modules and scripts:
+### PowerSploit is a collection of Microsoft PowerShell modules that can be used to aid penetration testers during all phases of an assessment. PowerSploit is comprised of the following modules and scripts:
+
+### Note: All reverse engineering components of PowerSploit now reside in the [PowerShellArsenal](https://github.com/mattifestation/PowerShellArsenal).
## CodeExecution
@@ -64,86 +66,6 @@ Installs a security support provider (SSP) dll.
Enumerates all loaded security packages (SSPs).
-## PETools
-
-**Parse/manipulate Windows portable executables.**
-
-#### `Get-PEHeader`
-
-An in-memory and on-disk PE parsing utility.
-
-#### `Get-ObjDump`
-
-Displays information about one or more Windows object files.
-
-#### `Get-LibSymbols`
-
-Displays symbolic information from Windows lib files.
-
-#### `Get-DllLoadPath`
-
-Returns the path from which Windows will load a Dll for the given executable.
-
-## Capstone
-
-**A PowerShell binding for the Capstone Engine disassembly framework.**
-
-#### `Get-CSDisassembly`
-
-Disassembles a byte array using the Capstone Engine disassembly framework.
-
-## ReverseEngineering
-
-**Tools to aid in reverse engineering.**
-
-#### `Get-PEB`
-
-Returns the process environment block (PEB) of a process.
-
-#### `Get-ILDisassembly`
-
-Disassembles a raw MSIL byte array passed in from a MethodInfo object in a manner similar to that of Ildasm.
-
-#### `Get-NtSystemInformation`
-
-A utility that calls and parses the output of the ntdll!NtQuerySystemInformation function. This utility can be used to query internal OS information that is typically not made visible to a user.
-
-#### `Get-StructFromMemory`
-
-Marshals data from an unmanaged block of memory in an arbitrary process to a newly allocated managed object of the specified type.
-
-#### `Get-Member`
-
-A proxy function used to extend the built-in Get-Member cmdlet. It adds the '-Private' parameter allowing you to display non-public .NET members
-
-#### `Get-Strings`
-
-Dumps strings from files in both Unicode and Ascii. This cmdlet replicates the functionality of strings.exe from Sysinternals.
-
-#### `ConvertTo-String`
-
-Converts the bytes of a file to a string that has a 1-to-1 mapping back to the file's original bytes. ConvertTo-String is useful for performing binary regular expressions.
-
-#### `Get-MethodAddress`
-
-Get the unmanaged function address of a .NET method.
-
-#### `Register-ProcessModuleTrace`
-
-Starts a trace of loaded process modules
-
-#### `Get-ProcessModuleTrace`
-
-Displays the process modules that have been loaded since the call to Register-ProcessModuleTrace
-
-#### `Unregister-ProcessModuleTrace`
-
-Stops the running process module trace
-
-#### `Get-Entropy`
-
-Calculates the entropy of a file or byte array.
-
## AntivirusBypass
**AV doesn't stand a chance against PowerShell!**
@@ -275,7 +197,7 @@ Note: The tools contained within this module were all designed such that they ca
* Always provide descriptive, comment-based help for every script. Also, be sure to include your name and a BSD 3-Clause license (unless there are extenuating circumstances that prevent the application of the BSD license).
-* Make sure all functions follow the proper PowerShell verb-noun agreement. Use Get-Verb to list the default verbs used by PowerShell.
+* Make sure all functions follow the proper PowerShell verb-noun agreement. Use Get-Verb to list the default verbs used by PowerShell. Exceptions to supported verbs will be considered on a case-by-case basis.
* I prefer that variable names be capitalized and be as descriptive as possible.
@@ -285,29 +207,23 @@ Note: The tools contained within this module were all designed such that they ca
* Catch all anticipated errors and provide meaningful output. If you have an error that should stop execution of the script, use 'Throw'. If you have an error that doesn't need to stop execution, use Write-Error.
-* If you are writing a script that interfaces with the Win32 API, do not compile C# code unless absolutely necessary. It is imperative that nothing aside from the script touches the disk.
+* If you are writing a script that interfaces with the Win32 API, try to avoid compiling C# inline with Add-Type. Try to use the PSReflect module, if possible.
* Do not use hardcoded paths. A script should be useable right out of the box. No one should have to modify the code unless they want to.
-* I don't want any v3 dependencies right now. In fact, it would be ideal to use `Set-StrictMode -Version 2.0` to ensure you are conforming to PowerShell v2 best practices.
+* PowerShell v2 compatibility is highly desired.
* Use positional parameters and make parameters mandatory when it makes sense to do so. For example, I'm looking for something like the following:
* `[Parameter(Position = 0, Mandatory = $True)]`
* Don't use any aliases unless it makes sense for receiving pipeline input. They make code more difficult to read for people who are unfamiliar with a particular alias.
-* Don't let commands run on for too long. For example, a pipeline is a natural place for a line break.
+* Try not to let commands run on for too long. For example, a pipeline is a natural place for a line break.
* Don't go overboard with inline comments. Only use them when certain aspects of the code might be confusing to a reader.
-* Use Out-Null to suppress unwanted/irrelevant output.
-
-* Only use .NET code when absolutely necessary.
-
-* Use the Write-Output keyword when returning an object from a function. I know it's not necessary but it makes the code more readable.
+* Rather than using Out-Null to suppress unwanted/irrelevant output, save the unwanted output to $null. Doing so provides a slight performance enhancement.
* Use default values for your parameters when it makes sense. Ideally, you want a script that will work without requiring any parameters.
-* Scripts that are intended to run on a remote machine should be self-contained and not rely upon any additional scripts. Scripts that are designed to run on your host machine can have dependencies on other scripts.
-
* If a script creates complex custom objects, include a ps1xml file that will properly format the object's output. \ No newline at end of file