Wednesday, March 07, 2007

DILE tutorial: basics

Link to the tutorial (3.8 MB!)

Finally, I have finished the first tutorial for DILE. It just shows some basic features of DILE and should be enough to get you started with it.
Basically, the animation shows how to debug a newly created, very simple application (which just adds two numbers). It demonstrates how to start the application in DILE, how to step through the code, check the call stack, loaded modules, local variables/arguments, evaluate expressions and how to use the Object Viewer. There are lots of explaining messages that will - hopefully - make clear why some things work differently in DILE.

Please, let me know of what you think of this tutorial, whether it's really useful, whether I should make more and if yes, then I'd be glad to hear ideas on what should the following ones be about (I have a few more subjects on my mind though). Of course, I'd also like to hear if you think that I should do something differently in such tutorials. And - as always - if you have anything else to say about DILE then just send me an e-mail or leave a comment. :-)

One more thing, if you are planning to link to the tutorial (why would anyone do that though?), then please link to this blog entry. Sooner or later (but rather later...) I will create a homepage for DILE and then I will move the tutorials there also and I'll update the link to it in this post. Thanks!

P.S.: As Sebastian suggested, I have used Wink for creating this Flash animation.

Labels: ,

10 Comments:

Anonymous Anonymous said...

Hi,

It will be fine to have an obfuscator integrated in DILE.

Maybe I can help you this way and develop the code for this ?

Thanks

MSN Messenger : cdemez2@hotmail.com

Thursday, March 29, 2007 at 3:41:00 PM GMT+2  
Blogger Zsozso said...

Hi,

Thank you very much for the offer, it sounds interesting but I'm afraid it's too early. Currently DILE cannot make any output assembly, it has no compiler. I still want to improve the debugger part of the application before starting to play around with the compiler interfaces, so it will take some time before I can really start to work on the compiler part.
Perhaps, it would be nice to have a plug-in system later like Reflector has, but first of all I want to finish the 3 most important parts of DILE: disassembling, debugging, compiling. 1.5 out of 3 is ready. :-)
The other 1.5 still needs lots of work...
Actually, the code of DILE is also quite complicated and chaotic in some places, I don't think that anything could be built on the top of it currently. It's really not like an API... :-( (I have never used the Unmanaged Metadata API and debugger API before and this can be seen on the quality of the code as well, I would do lots of things differently now after learning so much about them)

Anyway, thank you once again for the offer. I'm always happy to hear when somebody likes this project. :-)

Regards,
Zsolt Petreny

Saturday, March 31, 2007 at 5:49:00 PM GMT+2  
Anonymous Georgi D. said...

Hi, Zsozso.

I like DILE. It is an useful tool. May I know when it will process events? I can't see .event processing in it.

Please, do not stop developing DILE.

Thanks

Wednesday, May 2, 2007 at 11:32:00 PM GMT+2  
Blogger Zsozso said...

Hello Georgi,

Thanks, it's always nice to hear if somebody finds my work useful.

I feel embarrassed. There's only one reason why .events are not processed by DILE: I have forgotten about it. Shame on me... I will add it before the next release. Thanks for warning me! :-)

Regards,
Zsolt Petreny

Thursday, May 3, 2007 at 4:31:00 PM GMT+2  
Blogger Zsozso said...

Hello Georgi,

Good news, I have added handling of events (.event) to DILE. The source code in SVN already contains this feature. If you want to, then you can test it.

Is there anything else that is missing? :-)

Regards,
Zsolt Petreny

Friday, May 11, 2007 at 3:11:00 PM GMT+2  
Blogger Xiard said...

A friend of mine that I'm working with pointed me to this site. I'm about to download DILE and try it out. My goal is to be able to step through .NET framework code to get a better understanding of what's happening "under the covers" in certain cases. I watched the tutorial, and it was very clear and helpful. So far this looks like a tool that could be really useful for me.

Thanks,

David Cater

Friday, June 8, 2007 at 4:35:00 AM GMT+2  
Blogger Xiard said...

And I'd like to confirm that yes, it's very helpful. :-)

I was able to step into the Framework IL, and follow along with Reflector. I was finally able to see which code paths were being taken. It will take me a little longer to understand the IL opcodes well enough to really understand what's going on in the Framework code, but just being able to follow which methods are being called is a HUGE help.

Thanks!

David Cater

Friday, June 8, 2007 at 4:56:00 AM GMT+2  
Blogger Xiard said...

By the way, is there any way to load the debugging symbols (the PDB files) for the assemblies you're disassembling? Or is that a dumb question?

David

Friday, June 8, 2007 at 4:58:00 AM GMT+2  
Blogger Zsozso said...

Hello David,

I am really glad to hear that you think DILE is useful. If you use it long enough you will learn IL eventually and won't need Reflector any more. ;-)
I've been "Reflector-free" for a quite long time now. :-)

Unfortunately, currently DILE cannot read or use debugging symbols at all. The idea is good and I know it would be a nice feature to have. Actually, I first thought of it when I realized that reading the IL code without local variable names is a little bit difficult. No doubt, it's on my todo list but I don't think that this is the most important feature to have. At last, I would rather like to work on the compiler part to put some meaning behind the "editor" word but that's still far. I have to finish and fix a few things first... But if .NET will be around even after a few years then I will definitely add PDB support.

Thank you for using DILE and let me know if you have any problem or suggestion about it. :-)

Regards,
Zsolt Petreny

Saturday, June 9, 2007 at 5:08:00 PM GMT+2  
Blogger Ryan said...

This comment has been removed by a blog administrator.

Monday, March 16, 2009 at 12:33:00 PM GMT+1  

Post a Comment

<< Home