Exetools  

Go Back   Exetools > General > General Discussion

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 06-08-2020, 18:24
jonwil jonwil is offline
VIP
 
Join Date: Feb 2004
Posts: 387
Rept. Given: 2
Rept. Rcvd 21 Times in 9 Posts
Thanks Given: 2
Thanks Rcvd at 65 Times in 34 Posts
jonwil Reputation: 21
Tips for fixing up decompiled .NET code?

I have decompiled a .NET binary with dnSpy and the resulting output has some strange things in it like this
Code:
		public HouseType(sbyte id, string name, string unitTeamColor, string buildingTeamColor, [TupleElementNames(new string[]
		{
			"type",
			"teamColor"
		})] params ValueTuple<string, string>[] overrideTeamColors)
		{
			this.ID = id;
			this.Name = name;
			this.UnitTeamColor = unitTeamColor;
			this.BuildingTeamColor = buildingTeamColor;
			this.OverrideTeamColors = overrideTeamColors.ToDictionary(([TupleElementNames(new string[]
			{
				"type",
				"teamColor"
			})] ValueTuple<string, string> x) => x.Item1, ([TupleElementNames(new string[]
			{
				"type",
				"teamColor"
			})] ValueTuple<string, string> x) => x.Item2);
		}
and this
Code:
				for (int i = 0; i < array2.Length; i++)
				{
					var <>f__AnonymousType = array2[i];
					this.plugin.Map.Triggers.Add(<>f__AnonymousType.NewTrigger.Clone());
					this.plugin.Map.Triggers.Remove(<>f__AnonymousType.OldTrigger);
				}
and this
Code:
		[CompilerGenerated]
		internal static string <LoadINI>g__indexToType|20_1(IList<string> list, string index)
		{
			int num;
			if (!int.TryParse(index, out num) || num < 0 || num >= list.Count)
			{
				return list.First<string>();
			}
			return list[num];
		}
Are there any good tutorials on how to fix up such things?
Reply With Quote
  #2  
Old 06-08-2020, 20:05
Kurapica's Avatar
Kurapica Kurapica is offline
VIP
 
Join Date: Jun 2009
Location: Archives
Posts: 190
Rept. Given: 20
Rept. Rcvd 143 Times in 42 Posts
Thanks Given: 67
Thanks Rcvd at 404 Times in 87 Posts
Kurapica Reputation: 100-199 Kurapica Reputation: 100-199
This is normal code, what do you need to fix ?

Try to familiarize yourself with .NET framework classes, maybe this can help.
Reply With Quote
  #3  
Old 06-09-2020, 16:53
jonwil jonwil is offline
VIP
 
Join Date: Feb 2004
Posts: 387
Rept. Given: 2
Rept. Rcvd 21 Times in 9 Posts
Thanks Given: 2
Thanks Rcvd at 65 Times in 34 Posts
jonwil Reputation: 21
Turns out that ILSpy is the best decompiler and produced output that had few problems.
Reply With Quote
  #4  
Old 06-09-2020, 17:22
chants chants is offline
VIP
 
Join Date: Jul 2016
Posts: 725
Rept. Given: 35
Rept. Rcvd 48 Times in 30 Posts
Thanks Given: 666
Thanks Rcvd at 1,053 Times in 478 Posts
chants Reputation: 48
The ValueTuple and AnonymousType are just in a really ugly long form syntax. They can be reduced easily. Incidentally it's one reason to avoid them in code designed to be high performance as they can introduce extra generated code. The naming on the compiler generated function can be cleaned up that's the only annoying thing there. As for getting rid of all the compiler generated functions, this is the job of a good decompiler that can manage such refactorings
Reply With Quote
  #5  
Old 06-09-2020, 23:16
niculaita's Avatar
niculaita niculaita is offline
Family
 
Join Date: Jun 2011
Location: here
Posts: 1,342
Rept. Given: 947
Rept. Rcvd 89 Times in 61 Posts
Thanks Given: 4,299
Thanks Rcvd at 479 Times in 338 Posts
niculaita Reputation: 89
how to avoid start activation during 30 trial days and after that using an unic code changing next ?

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim num As Integer
Dim num2 As UInt32
Dim num3 As UInt32
Try
If (MySettingsProperty.Settings.Culture.Length > 0) Then
Thread.CurrentThread.CurrentUICulture = New CultureInfo(MySettingsProperty.Settings.Culture)
End If
Catch exception1 As Exception
Dim ex As Exception = exception1
ProjectData.SetProjectError(ex)
Dim exception As Exception = ex
ProjectData.ClearProjectError
End Try
Me.Localize
Me.KSVE = New KSVE4Class
Me.KSVE.Initialize(-1281006)
Me.KSVE.FindActivation(num, num2, num3)
If ((num <> 0) And (num <> &H100)) Then
Me.RunActivationApplication
MyBase.Close
Else
Me.voice = New SpeechSynthesizer
Me.ComboBox1.Items.Clear
Dim voice As InstalledVoice
For Each voice In Me.voice.GetInstalledVoices
Me.ComboBox1.Items.Add(voice.VoiceInfo.Name)
Next
If (Me.ComboBox1.Items.Count > 0) Then
Me.ComboBox1.SelectedIndex = 0
End If
End If
End Sub
__________________
Decode and Conquer
Reply With Quote
  #6  
Old 06-10-2020, 03:41
sendersu sendersu is online now
VIP
 
Join Date: Oct 2010
Posts: 1,066
Rept. Given: 332
Rept. Rcvd 223 Times in 115 Posts
Thanks Given: 234
Thanks Rcvd at 512 Times in 288 Posts
sendersu Reputation: 200-299 sendersu Reputation: 200-299 sendersu Reputation: 200-299
Quote:
Originally Posted by jonwil View Post
Turns out that ILSpy is the best decompiler and produced output that had few problems.
just wondering how does the ILSpy decompile your code?
Reply With Quote
The Following User Says Thank You to sendersu For This Useful Post:
niculaita (06-11-2020)
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Help to fixing API-Calls Nukacola General Discussion 6 05-11-2005 16:49
Import OS Fixing MaRKuS-DJM General Discussion 31 07-16-2004 23:20
Fixing an EXE to not call a DLL? Barry General Discussion 11 06-03-2004 00:37
Problem with fixing IAT K3nny General Discussion 5 01-04-2004 19:26


All times are GMT +8. The time now is 23:06.


Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX, chessgod101
( 1998 - 2024 )