de4dot
975d195dbc
Don't need to prefix the method with the class name
2012-02-03 04:24:16 +01:00
de4dot
8e89e011e9
Add method to re-read all blocks
2012-02-03 04:23:08 +01:00
de4dot
01a893a799
Make canInline() virtual and move some logic there
2012-02-02 10:38:56 +01:00
de4dot
f3525d8980
New version: 1.5.1
2012-02-01 08:09:40 +01:00
de4dot
a7fa23e2d8
New version: 1.5.0
2012-01-29 18:58:26 +01:00
de4dot
7762147877
Add createFieldDefinition()
2012-01-28 22:18:28 +01:00
de4dot
96c13fb05e
Cache values to get 30% speed up with some files (DNR)
2012-01-27 03:10:37 +01:00
de4dot
dce16e9f12
Remove useless code
2012-01-27 01:03:41 +01:00
de4dot
887ee7c9e8
Fix method signature
2012-01-27 01:02:17 +01:00
de4dot
cd46fb9793
Don't use iterator for speed
2012-01-27 00:30:53 +01:00
de4dot
cac39b8a01
Don't use cecil coll iterator for speed
2012-01-27 00:16:23 +01:00
de4dot
91cc161a9d
Create instances of common constants
2012-01-26 23:57:37 +01:00
de4dot
247cb2be20
Compare ElementType instead of calling verifyType for speed
2012-01-26 22:40:19 +01:00
de4dot
ec45974605
Speed up getUnknownValue() method. 16-17% execution time -> ~6%
2012-01-26 22:22:24 +01:00
de4dot
5704e90423
Allow inlining value type methods
2012-01-25 12:19:45 +01:00
de4dot
9831dbdcdb
Ignore prefix instrs
2012-01-24 02:28:21 +01:00
de4dot
82dbb2a218
Add matching get hash code method
2012-01-23 09:11:39 +01:00
de4dot
8c946bfd34
Add peek() method
2012-01-22 19:33:20 +01:00
de4dot
7962de961c
Add getModuleTypeCctor() method
2012-01-22 11:15:14 +01:00
de4dot
2dadd773ec
Use ParameterDefinition.Sequence
2012-01-21 20:31:47 +01:00
de4dot
3c85b3f964
Fix toBoolean()
2012-01-21 20:04:13 +01:00
de4dot
f65adc81d8
Inline block if it's a conditional switch branch
2012-01-21 19:57:04 +01:00
de4dot
6a5ddba022
Move methods to base class
2012-01-21 19:55:37 +01:00
de4dot
6c7bcbed79
Use the ThisParameter if available
2012-01-21 19:54:33 +01:00
de4dot
f3f8975f01
If instance explicit, 'this' is 1st param
2012-01-20 19:30:40 +01:00
de4dot
2ad9a9a087
New version: 1.4.4
2012-01-17 05:46:06 +01:00
de4dot
788488dffa
New version: 1.4.3
2012-01-17 03:01:48 +01:00
de4dot
172f497535
Allow null input
2012-01-17 02:51:23 +01:00
de4dot
3d48bceda3
New version: 1.4.2
2012-01-14 12:40:41 +01:00
de4dot
c28b575f7a
Add MethodCallInliner prop to cflow deob class
2012-01-11 06:44:44 +01:00
de4dot
17327902c3
Refactor method call inliner code
2012-01-11 04:38:02 +01:00
de4dot
9079445e01
Add another getField overload
2012-01-11 02:32:36 +01:00
de4dot
0d0a40376d
Update copyright years
2012-01-09 23:02:47 +01:00
de4dot
12b327bef3
Add constant folding
2012-01-09 01:25:25 +01:00
de4dot
d3369279bc
Add another method overload
2012-01-08 22:40:11 +01:00
de4dot
061f793f68
Add public local/arg set methods
2012-01-08 22:39:52 +01:00
de4dot
1e21845448
Make method public
2012-01-08 22:39:20 +01:00
de4dot
0398666c93
Update detection of <Module> type
2012-01-08 18:46:23 +01:00
de4dot
9d08a7fe34
Add type ref updater base class
2012-01-07 19:33:57 +01:00
de4dot
635c414c1b
Update code to take a GenericInstanceMethod param
2012-01-07 00:02:31 +01:00
de4dot
e0295980f5
Add two more methods
2012-01-06 23:59:20 +01:00
de4dot
d61e2b6d72
Update code to handle another case
2012-01-02 14:24:08 +01:00
de4dot
eb4a38163d
Add emulate() method
2012-01-02 14:23:10 +01:00
de4dot
08f8a2809d
Add append() method
2012-01-02 14:22:51 +01:00
de4dot
ac30b8c213
Rename method to getValues()
2012-01-01 12:09:16 +01:00
de4dot
9a505b156e
Update getKeys() method
2012-01-01 12:05:23 +01:00
de4dot
99d4e2a770
Add getKeys() methods
2011-12-31 16:14:25 +01:00
de4dot
a817a14688
Add compareFieldReferenceAndDeclaringType() method
2011-12-31 12:57:08 +01:00
de4dot
959b6c8229
Add some more utility methods
2011-12-29 08:21:19 +01:00
de4dot
221dcc3cc9
Don't inline method if ldarga is used
2011-12-28 16:40:03 +01:00
de4dot
ffbceae488
Update methods inliner code
2011-12-28 13:28:17 +01:00
de4dot
91c406b2a0
Add findAny() methods
2011-12-28 13:22:41 +01:00
de4dot
c6572aa75e
Allow invalid (null) targets
2011-12-28 13:21:21 +01:00
de4dot
2a89e28b5e
New version: 1.4.1
2011-12-26 20:41:16 +01:00
de4dot
9aa65c5702
Fix block order bug.
2011-12-26 01:03:39 +01:00
de4dot
259ec3455b
Rename method
2011-12-25 23:10:17 +01:00
de4dot
7e1121ae0a
Re-order the blocks some more for better decompiler output
2011-12-25 23:08:19 +01:00
de4dot
d40816d495
Add another check
2011-12-25 23:07:07 +01:00
de4dot
261e5c88cc
Keep the most public reference
2011-12-23 18:26:22 +01:00
de4dot
7ed11cffb9
New version: 1.4.0
2011-12-22 23:53:59 +01:00
de4dot
7b71a565ec
Move method to DotNetUtils
2011-12-22 05:37:10 +01:00
de4dot
a6d8762d13
Move methods to DotNetUtils
2011-12-21 18:04:18 +01:00
de4dot
534aba0dfe
Move methods to DotNetUtils.cs
2011-12-21 06:38:01 +01:00
de4dot
c65b76583c
Add CflowDeobfuscator
2011-12-20 20:11:05 +01:00
de4dot
b96ab54ba6
New version: 1.3.8
2011-12-16 19:34:55 +01:00
de4dot
f30b0ef749
Add type, method, field, prop, event dictionaries
2011-12-16 18:56:45 +01:00
de4dot
d35e92b53c
Update field type
2011-12-15 16:17:04 +01:00
de4dot
0b5d4d864c
Remove nop blocks
2011-12-15 10:04:04 +01:00
de4dot
a3c9221410
Rename method
2011-12-15 10:01:46 +01:00
de4dot
c73459f1be
New version: 1.3.7
2011-12-11 12:38:48 +01:00
de4dot
5b7806cc1f
New version: 1.3.6
2011-12-06 17:38:30 +01:00
de4dot
f8ef5d9b9f
Update property creator method to take a getter and setter method
2011-12-05 23:46:05 +01:00
de4dot
04940d785c
Update version: 1.3.5
2011-12-04 20:02:18 +01:00
de4dot
7a6af40832
Update version: 1.3.4
2011-12-03 14:33:37 +01:00
de4dot
0db4222c10
Update version: 1.3.3
2011-12-02 15:21:18 +01:00
de4dot
49701686e5
Update version: 1.3.2
2011-12-02 13:19:38 +01:00
de4dot
2734a9ee95
Update the code that resolves typedefs
2011-12-01 22:32:09 +01:00
de4dot
04ae6e116f
New version: 1.3.1
2011-11-26 12:34:59 +01:00
de4dot
a90fd1fa2f
Update detection of the empty class
2011-11-26 12:34:17 +01:00
de4dot
e4e9f6787c
New version: 1.3.0
2011-11-24 11:01:08 +01:00
de4dot
1d8fe39f59
Add isEmptyObfuscated() method
2011-11-24 10:35:42 +01:00
de4dot
76420f4736
Add createEventDefinition() method
2011-11-23 06:38:10 +01:00
de4dot
121bb35633
Add createPropertyDefinition()
2011-11-21 10:32:57 +01:00
de4dot
3f3814001c
Update method sig, rename stuff
2011-11-16 22:56:36 +01:00
de4dot
dba4e3ab79
Update the code to fix some problems
2011-11-16 22:53:53 +01:00
de4dot
695da497a7
Set version: 1.2.3
2011-11-14 06:23:03 +01:00
de4dot
6bf3de0dee
Set version: 1.2.2
2011-11-12 16:57:00 +01:00
de4dot
d9e138bbe1
Strong name sign all assemblies (except tests)
...
You must create your own private de4dot.key file in the root source dir
before compiling:
sn -k de4dot.snk
2011-11-12 14:08:25 +01:00
de4dot
d7ed7abb99
Add removeGuaranteedDeadBlock() method
2011-11-12 13:27:24 +01:00
de4dot
572d9d376d
Update version: 1.2.1
2011-11-11 21:00:42 +01:00
de4dot
a3e7d9c9d6
Update version: 1.2.0
2011-11-10 14:55:40 +01:00
de4dot
1302608470
Move getInstruction() to DotNetUtils.cs
2011-11-09 11:28:09 +01:00
de4dot
75a464a7f4
Merge branch 'master' into dnr
2011-11-05 14:27:40 +01:00
de4dot
c66c062753
Fix problem when HasPInvokeInfo == true but PInvokeInfo == null
2011-11-05 07:46:24 +01:00
de4dot
30f713f8f8
Rename isDelegateType() -> derivesFromDelegate()
2011-11-04 00:39:48 +01:00
de4dot
76241db427
Add isDelegate() method
2011-11-04 00:06:25 +01:00
de4dot
c1820f1a82
Add method to replace generic params with generic args.
...
The code only handles basic cases, eg. T -> int, but not T[] -> int[].
2011-11-03 22:53:04 +01:00
de4dot
555ca393e2
No need to check for typedef since it's checked elsewhere
2011-11-03 18:52:21 +01:00
de4dot
3dd8649859
Merge branch 'master' into dnr
2011-11-03 07:11:10 +01:00
de4dot
f351a09564
Update symbol renamer to load referenced assemblies.
...
This way it's possible to use a rename-all regex (.*) without renaming
symbols that shouldn't be renamed (eg. methods that are defined in an
interface in a non-deobfuscated module, eg. Dispose()). A warning is
displayed if an assembly can't be loaded.
2011-11-03 06:43:33 +01:00
de4dot
b8879e74e6
Merge branch 'master' into dnr
2011-11-02 04:26:12 +01:00
de4dot
8b780a4696
Add ScopeAndTokenKey. Make sure other keys are immutable.
2011-11-02 04:14:59 +01:00
de4dot
ade1720d32
Use type cache to look up types (huge speedup in DNR code)
2011-11-02 02:25:07 +01:00
de4dot
f342a481a9
Update Conv_XX emulation. Default case should push unknown int32/64.
2011-11-02 01:19:18 +01:00
de4dot
2fcd13000b
Add option to disable method inlining
2011-11-01 14:18:29 +01:00
de4dot
651072e2d4
Add methods to get ParameterDefinition
2011-10-31 23:56:02 +01:00
de4dot
b530c1a313
Add isSystemObject() method
2011-10-31 19:39:00 +01:00
de4dot
1eedf7cb3e
Update if expr. It was wrong
2011-10-31 19:38:36 +01:00
de4dot
cbf37e8732
Move getLocalVar() and add getArgType()
2011-10-31 19:37:26 +01:00
de4dot
11781b2875
Check for null methods
2011-10-31 00:08:38 +01:00
de4dot
deda2d5d60
Handle case where try handler block is before try block
2011-10-28 01:27:00 +02:00
de4dot
61b1f7a06a
Ignore invalid metadata tokens in code
2011-10-27 15:57:33 +02:00
de4dot
0c0093ff76
Add createLdci4() method
2011-10-26 21:01:38 +02:00
de4dot
349ebc4e72
Make InstructionEmulator class public
2011-10-26 14:17:33 +02:00
de4dot
e92c2ce97b
Use available method, and get rid of useless code
2011-10-24 19:45:31 +02:00
de4dot
129da2e7f9
Set version 1.1.3
2011-10-24 15:48:19 +02:00
de4dot
d9012fbbd3
Make sure we don't get stuck in an infinite loop
2011-10-24 15:12:32 +02:00
de4dot
4d5d1b9089
Inline short methods (for DNR)
2011-10-24 12:45:20 +02:00
de4dot
46309f2f78
New version: 1.1.2
2011-10-23 22:09:27 +02:00
de4dot
779d1a8a31
Update version to 1.1.1
2011-10-23 20:13:25 +02:00
de4dot
b2ac811875
ParameterDefinition.Index is 1-based or 0-based
2011-10-23 20:12:10 +02:00
de4dot
3f1b9152bd
Add CO deobfuscator. Can decrypt embedded assemblies.
2011-10-22 14:31:38 +02:00
de4dot
99bd79e418
Change to version 1.1.0
2011-10-21 22:27:26 +02:00
de4dot
603fa74ceb
Only use DNR hack if methods have same declaring type
2011-10-21 21:47:06 +02:00
de4dot
88f7a31ff1
Print number of removed instructions
2011-10-21 21:35:35 +02:00
de4dot
2ff8a0ea7a
Remove old cflow deobfuscator code
2011-10-21 20:35:13 +02:00
de4dot
d14f52660d
Remove old comments
2011-10-21 20:19:51 +02:00
de4dot
cdd92d1415
Add fix for old DF
2011-10-21 20:14:25 +02:00
de4dot
a594b11254
Remember to add this as first arg if HasThis is set
2011-10-21 19:32:37 +02:00
de4dot
8c2f26bfcb
Replace stloc + ldloc with dup + stloc only if it's a bool local
2011-10-21 18:53:36 +02:00
de4dot
4b3c52c44f
Truncate values when emulating stloc/starg
2011-10-21 18:45:59 +02:00
de4dot
c1290ec3ee
Should be instance variables
2011-10-21 18:05:24 +02:00
de4dot
2bba9e688a
Remove more dead code and useless stores
2011-10-21 18:02:58 +02:00
de4dot
58af131485
Add code to remove dup + pop
2011-10-20 12:29:19 +02:00
de4dot
8e83bc22f2
Update isBranchBlock() method
2011-10-20 05:43:01 +02:00
de4dot
9df4a6c9d2
Undo dup fix
2011-10-20 04:50:58 +02:00
de4dot
948d5c1744
Only use the DNR inline method hack if it's a static method
2011-10-20 03:34:05 +02:00
de4dot
f79b12d4f3
Make sure blocks are laid out in a verifiable order
2011-10-20 02:58:30 +02:00
de4dot
865cfb9536
Get rid of the useless list
2011-10-20 02:45:55 +02:00
de4dot
c8500b4f33
Remove unused local variables
2011-10-20 02:38:44 +02:00
de4dot
c3d6e25ad7
Add instructions that clear the stack
2011-10-20 01:43:33 +02:00
de4dot
debc4b346a
Nops are removed
2011-10-20 00:47:38 +02:00
de4dot
28f95d386e
Fix problem with dup, and don't include nops
2011-10-20 00:36:30 +02:00
de4dot
d7c61c65fe
Remove pop instrs and code that pushes the value
2011-10-19 15:49:19 +02:00
de4dot
f519d6f6d8
Update switch cflow deob code to handle more cases
2011-10-19 09:13:27 +02:00
de4dot
7fe71a963a
Add inline bool method hack for DNR
2011-10-19 01:53:42 +02:00
de4dot
80acf1d59f
Add switch cflow deobfuscator
2011-10-18 23:31:50 +02:00
de4dot
f374308d1e
Emulate instrs only if last instr is bcc/switch
2011-10-18 08:28:23 +02:00
de4dot
98936364f7
Add code to emulate switch and ldelem
2011-10-18 08:17:21 +02:00
de4dot
de8e63d140
Emulate more instructions
2011-10-17 21:34:00 +02:00