Hi, me again :D.
For the obfuscated string problem, please download this samples: http://simpledotnet.googlepages.com/testdll.zip testdll.original.dll is original file, testdll.dll comes from: AssemblyDefinition ad = AssemblyFactory.GetAssembly(@"d:\ \testdll.original.dll"); AssemblyFactory.SaveAssembly(ad, @"d:\\testdll.dll"); Please look into GetString() method, you can find the string is changed. And the return value of GetString is different. This is not Cecil's fault. The reason the obfuscated string is not standard unicode string. Unicode.GetString() of .Net 2.0 ignore/remove some invalid characters. So in Cecil, operand of instruction ldstr is wrong for this case. (in UserStringsHeap.cs -> ReadStringAt) The popular assembly browser, Reflector, has same problem. As I mentioned at the first post, Unicode class of .Net 1.1 handle it properly. Is it possible to use .Net 1.1 logic for Cecil to decode unicode bytes to string? Regards Wicky --~--~---------~--~----~------------~-------~--~----~ -- mono-cecil -~----------~----~----~----~------~----~------~--~---
