Skip to content

Commit f5a8100

Browse files
authored
Merge pull request #13 from s0lst1c3/add-feature-module-maker
Add feature module maker
2 parents 719ad42 + bbb0c60 commit f5a8100

21 files changed

+25901
-4
lines changed

Changelog

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
0.0.1 - s0lst1c3 <gabriel@solstice.sh>
22
Initial release.
3+
4+
0.1.0 - s0lst1c3 <gabriel@solstice.sh>
5+
Added module maker.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
by [@s0lst1c3](https://twitter.com/s0lst1c3)
44

5-
Current release: [v0.0.1-alpha](https://github.com/s0lst1c3/dropengine/releases/tag/v0.0.1-alpha)
5+
Current release: [v0.0.1-alpha](https://github.com/s0lst1c3/dropengine/releases/tag/v0.1.1-alpha)
66

77
Supports _Python 3.7+_.
88

__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '0.0.1'
1+
__version__ = '0.1.1'
22
__codename__ = 'lambsauce'
33
__author__ = '@s0lst1c3'
44
__contact__ = 'gabriel<<<at>>solstice(dot))sh'

core/dispatcher_cli.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -633,8 +633,6 @@ def add_arguments(parser):
633633
default=None,
634634
choices=Dispatcher.get_choices('./modules/input/crypters', 'MCrypter'),
635635
help='Select crypter')
636-
637-
638636

639637
modules_group.add_argument('--interface',
640638
dest='interface',

csharp_ini_maker.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
import sys
2+
import argparse
3+
4+
from antlr4 import *
5+
from module_maker.CSharpLexer import CSharpLexer
6+
from module_maker.CSharpParser import CSharpParser
7+
from module_maker.CSharpParserListener import CSharpParserListener
8+
9+
10+
from module_maker.symbol_ini import SymbolINI
11+
12+
13+
OMODULE_TYPES = [
14+
15+
'decrypter',
16+
'dkey',
17+
'executor',
18+
'imports',
19+
'inner_shell',
20+
'output_modules',
21+
'payload_main',
22+
'postmodule',
23+
'premodule',
24+
'runner',
25+
]
26+
27+
IMODULE_TYPES = [
28+
29+
]
30+
31+
MODULE_DIRECTIONS = [
32+
33+
'output',
34+
'input',
35+
]
36+
37+
def cli():
38+
39+
parser = argparse.ArgumentParser()
40+
41+
parser.add_argument('--input-file', '-i',
42+
dest='input_file',
43+
type=str,
44+
required=True,
45+
help='Specify source code file to input')
46+
47+
parser.add_argument('--output-file', '-o',
48+
dest='output_file',
49+
type=str,
50+
required=True,
51+
help='Specify name for output INI file')
52+
53+
args = parser.parse_args()
54+
55+
return args
56+
57+
def gather(args):
58+
59+
input_handle = FileStream(args.input_file)
60+
lexer = CSharpLexer(input_handle)
61+
tokens = CommonTokenStream(lexer)
62+
parser = CSharpParser(tokens)
63+
tree = parser.compilation_unit()
64+
65+
listener = CSharpParserListener()
66+
walker = ParseTreeWalker()
67+
walker.walk(listener, tree)
68+
69+
with open(args.output_file, 'w') as output_handle:
70+
71+
output_handle.write('[vars]\n')
72+
for v in listener.vars:
73+
output_handle.write(v+'\n')
74+
output_handle.write('\n')
75+
76+
output_handle.write('[methods]\n')
77+
for v in listener.methods:
78+
output_handle.write(v+'\n')
79+
output_handle.write('\n')
80+
81+
output_handle.write('[class_decls]\n')
82+
for v in listener.class_decls:
83+
output_handle.write(v+'\n')
84+
output_handle.write('\n')
85+
86+
output_handle.write('[params]\n')
87+
for v in listener.params:
88+
output_handle.write(v+'\n')
89+
output_handle.write('\n')
90+
91+
output_handle.write('[delegates]\n')
92+
for v in listener.delegates:
93+
output_handle.write(v+'\n')
94+
output_handle.write('\n')
95+
96+
output_handle.write('[imports]\n')
97+
for v in listener.imports:
98+
output_handle.write(v+'\n')
99+
output_handle.write('\n')
100+
101+
def main():
102+
103+
args = cli()
104+
105+
gather(args)
106+
107+
if __name__ == '__main__':
108+
cli()
109+
main()

0 commit comments

Comments
 (0)