VB6, and .net. Total noobness...help? |
Kung Fu Kenobi | I've just started with VB6, like 5 days ago. Before then I was having a rough time of it with things like C/C++/C#, Java, J#, and the whole .net thing in general. 5 days of VB6, has been more productive than over a year with those other languages. Something just clicked, and I took off.
Up until a few days ago I was more or less oblivious to VB.net, and a net search for VB6 VS VB.net left me confused. I'm not sure which VB is right for me, and would very much appreciate some help.
-I'm a hobbyist, with no dreams of turning pro. Ever.
-I'd gladly sack performance to shallow the learning curve.
-I only care about features that make life easier. (but the flip side is...)
-If I have a choice between simple, and "lame", VS cooler and more complicated. Lame almost always wins.
-I'm an artist first. Time spent programing is time not making content.
-I'd rather be making content.
-VB6 totally clicked where many (MANY!) other languages just didn't.
Which VB is right for me?
Are people sticking with VB6?
Are people jumping on .net?
|
Crysstaafur | Although a hybrid user of VB6(for windows stuff) and Quickbasic7(for ms-dos stuff). Taking your circumstances into thought, I'd probably go with
DarkBASIC(for windows stuff, media friendly) and QB(good for learning fundamental stuff, like user defined types, modular coding, etc). Then tackle VB 5 or VB 6.
Hope this helps... |
Zarneth | I'd reccomend VB.Net myself. The dev environment is much better than VB6. Though you can't edit code while it's running like in VB6, this really isn'ta problem once you're used to it, considderiny you're only just starting you prolly wont' even notice. |
Eric Coleman | I wouldn't recommend VB.NET just because of the IDE. Collapasible sections of code was fun for about 5 minutes then the novelty wore off. Honestly, VB.NET is more complicated than VB 6.
Lets try not to turn this thread into vb6 vs vb.net.
>-I'm a hobbyist, with no dreams of turning pro. Ever.
Then VB is a good choice. If you ever need more power, you can also use VB for the majority of your program and then write a simple C DLL with speed critical code that can be called from VB.
-I'd gladly sack performance to shallow the learning curve.
VB6 wins here. There is a lot more information (in terms of game programming) for VB6 than for vb.net.
-I only care about features that make life easier. (but the flip side is...)
-If I have a choice between simple, and "lame", VS cooler and more complicated. Lame almost always wins.
Well, I wouldn't call VB6 lame, but it is simpler than VB.net. The .NET framework is really large, and now that I think about it I really need to get a reference book.
-I'm an artist first. Time spent programing is time not making content.
VB6 wins here for you. There are a lot more code samples for VB6 than VB.net, and that means it should hopefully be easier (and quicker) for you to learn new things instead of having to do the research on your own. MS really left out a lot of information in Directx 9 with regard to VB.NET, and unfortunately that lack of documentation has really effected the transition for a lot of people.
-VB6 totally clicked where many (MANY!) other languages just didn't.
That should be your answer. Don't try to fix it if it works.
As Crystaafur pointed out, there are some BASIC dialects specifically suited for game programming. The two that I know of are http://www.blitzbasic.com/ and http://www.darkbasic.com/ . They both have developer communities, so if you decide that you like either of those products then you won't be without help.
|
Zarneth | quote: Collapasible sections of code was fun for about 5 minutes then the novelty wore off.
Err you're kidding right? It's so mcuh easier not having to search though large ammounts of code trying to find the section you want. Just collapse everything and uncollapse the sections I'm working on.
quote: VB.NET is more complicated than VB 6.
It is? I guess so. I'd been using VB6 previously and har no problems moving to .NET. I went back to VB6 the other day to fix xomething in one of my older projects and I was getting really annoyed at the lack of popup tooltips in the code which seem to be a bit more frequent in .NET. among other little missing features. And i'm still using .net 2002 I think. I could be wrong but I believe that was the first release of .net?
quote: There are a lot more code samples for VB6 than VB.net
True. For a beginner this may be a bit of a problem. Not so much for the advanced user. Though if you're a beginner wanting to get into game programming it's definitly a big issue. So yeah. Experienced users I still say .net is the way to go, but beginners should go for vb6 for the ammount of help and samples out there. |
Lachlan87 | The more I use VB.Net, the better I like it. I definitely prefer it to VB6. With that said, given your priorities, I'd have recommend you stick with VB6. The Visual Studio.Net editor was greatly improved, and a lot of things added to the language that make my life a lot easier, but I think VB6 remains easier to learn.
More importantly, you said you didn't like C#, and Visual Basic.Net feel just like C#, except with a superior syntax. |
Kung Fu Kenobi | So if I've got this straight, vb.net has lots of new toys for more advanced users, but isn't easier to learn. By learning VB6 I'm not "just missing out" on .net, in the same way I would not upgrading (for example) to a new version of photoshop.
|
Zarneth | Well I wouldn't say VB.net is harder to learn, if at all. But being relativly new it's harder to find code samples and help on the net. And that's a VERY big issue for anyone new to a language. so yes. stick with VB6. there's far more people and sites that can help you if you get stuck. It's probably easier and cheaper to get your hands on a legal copy of VB6 than vb.net aswell.
In fact I think I started out on the VB5 Controll creation edition. Which was seemingly free, but it couldn't complie exe's. |
sdw | For your case, just use blitzbasic/darkbasic. |
Zarneth | Assuming he's only planning to try game programming? |
Kung Fu Kenobi | Which I'm not. I actually need a general purpose language for other things, as well.
Another thing has me confused though. If DarkBASIC is so much better for gaming, why are there so many sites for game related material in VB? |
Zarneth | I'm guessing it's simply because it's been around a lot longer and is more widly known. With a big name like Microsoft behind it too. I know pratically nothing about Dark and Blitz basic but I wouldn't nesseciarrily say they're better for gaming. More so they're designed specifically for gaming. And as a result may be much easier and faster to make a game. They probably contain a built in multi purpose engine. But you may be limited to this engine too. With less options than with VB. If you're going to use VB normally you'd be best to stick with VB for everything. Then you don't have to deal with switching back and forth between languages and dev enviroments and getting royally confused by the diferences between the two.
If you wanna try your hand at 3d programming, but want flexibility and don't want to be stuck with a gaming only language, I'd reccomend using the Revolution3d Engine with VB6. It's a walk in the park compared to working directly with Direct3d. However I wouldn't really reccomend starting any form of 3d game till you have a reasonable ammount of experience in VB. |
Kung Fu Kenobi | Cool. Thanks everyone for setting me straight on this stuff. |
VBBR | quote: Originally posted by cbx
Face it at it's core Linux is a command line OS no different then DOS
So what? Computers are ruled by 0's and 1's. Just because you don't have a pretty interface doesn't mean it's less powerful. What *** Microsoft Corporation *** (ahem) did with windows was just melting the core with the user interface (try using windows without explorer.exe).
Remember another thing, essentially the Windows NT platform is also a command-line OS. Just remember the ugly installation process. There's just a good-looking UI on top of it. (as I said, that's how computers work, you make a bunch of operations with 1's and 0's and look for a way to show the end result to the user)
quote: Originally posted by cbx
It's microsofts. It's there framework, it's there OS (...) And if they want us to use .NET they will have to start making a more proactive aproace to getting .NET onto end users machines.
It certainly would sound a lot better if you learnt how to spell "their" and "approach". |
Eric Coleman | quote: Originally posted by cbx
in the sense that it's not actually our responsibility to ensure the end user has the .NET framework installed. It's microsofts. It's there framework, it's there OS, and they are the ones that need to ensure that it gets installed on peoples systems out there.
I respectfully disagree. I don't think it's Microsoft's responsibility to make sure the end user has .NET installed. It's just like DirectX, it's the vendor's responsibility. DirectX and .NET are 3rd party libraries that you as a developer chose to use, therefore since the developer made the decision to use them the task of making sure the libraries exists falls solely on the developer.
Wouldn't you be pissed off if when you installed the game Myst it simply didn't work because you didn't have Quicktime installed? Luckily they provided it on the CD so you can install it if you don't have it already. I'm sure I would have been pissed off if they told me I had to call the Apple BBS to download yet another program to install.
And wasn't it you that complained that Microsoft just screwed up all your previous work by releasing a new version of DirectX that failed to be backwards compatible? [;)] Your solution of searching for older hacked versions of a directx sdk on some website I've never heard of (and don't trust) to install some extremly specific version is not optimal, especially for Grandma and Grandpa Simpson.
Also, you do need the framework to develop .NET applications, just like you need a C compiler to create C programs and VB to create a VB program.
|
sdw | quote: That OS will require far more advancements in terms of ease of use, and pickup and play simplicity. Face it at it's core Linux is a command line OS no different then DOS, supported and hailed as the MS killer by programmers, computer enthusiests, and geeks alike.
That doesn't make much sense to me because it's really your choice whether to use the command line or GUI, just like windows. Sometimes it's just much faster to do something in the command line rather than having to click around.
quote: NOT, I repeat NOT, by grandma and grandpa simpson, and cirtianly not by the millions of people who know next to nothing about computers (or still do not even own one).
I like to think that it's fairly simple to check mail and surf the web on any OS. Also, grandma and grandpa don't want to spend a lot of money and Linux is 0 times as expensive as windows, and so is all the other software which comes with your flavor of linux :D
As for the quality of software, the only thing I can think of where windows software beats linux software is dependencies. Sometimes they're a pain to hunt down. Aside from that, most linux software is open source so that bugs and security holes are fixed quickly. In my opinion linux generally has more features than windows.
Are you sure that you really gave linux a chance? |
Eric Coleman | quote: Originally posted by sdw
Linux is 0 times as expensive as windows
I installed Mandrake, and then tried to install some development software that needed updated components, but Mandrake charges money for the updates.
Windows: Buy the OS get free updates.
Linux: Get free OS but buy the updates. |
sdw | I believe you're referring to the 4th CD. Mandrake gives you linux free of charge. They only charge for the 4th CD (which is optional) which contains extra software and libraries. This is how you can help support Mandrake. You can get all the software off that CD from places like rpmfind.net. |
DevlinSE | Okaaaaayy.... so ... (ahem). Which one should Kung Fu Kenobi use? [:p]
I think you should try them both if you can. There are a lot of resources and samples on the net for both flavors of vb so I think productivity is not so much of a problem. The only way to know if them new shoes fit is if you try em' on ... or something like that [:D].
Buuuuuut, vb.net has got real OOP! But you don't need that do you? So there! [:p]
~Peace |
cbx | Kinda late to be posting now, I thought I had posted earlier but I guess not. I would say the sooner you start with vb.net the better. I started using vb.net as soon as vb.net 2002 hit the shelves and I have not looked back since. Once you get into it you will truly apreciate the simplicity, speed, convienince and ease of use that it has to offer. I was a die hard fan of vb5/6 and looking back on those languages I realize that they were holding me and my skills back as a developer. I understood OOP (Object Oriented Programming) before I even began using vb5/6, but .NET really helped open my eyes, and allowed me to modernize my skills by allowing me to do things like take advantage of OOP, and interface programming etc. vb.net if a far superior language then vb5/6 were, and I would reccomend it to anyone. NOTE: personally I would wait if I were you until vb2005 ships. The advancements in the 2005 release will be well worth the wait!
Lets put it this way. Microsoft and the .NET framework are the future of programming. Heck the next version of windows (code name longhorn) will be rewritten in .NET! Microsoft is currently in the process of porting all of there software over to .NET so what does that tell you!
I'd also like to direct you to the fallowing link ...
[url]http://www.vbgamer.com/msgboard/topic.asp?TOPIC_ID=20[/url]
... That link will bring you a previous fourm topic and describes how to get the vb.net compiler free, as well as some free and powerfulle IDE resources like SharpDevelop. |
VBBR | quote: Originally posted by cbx
Lets put it this way. Microsoft and the .NET framework are the future of programming. Heck the next version of windows (code name longhorn) will be rewritten in .NET! Microsoft is currently in the process of porting all of there software over to .NET so what does that tell you!
That was really sounding like advertising to me until I read this:
quote: Originally posted by cbx
I'd also like to direct you to the fallowing link ...
[url]http://www.vbgamer.com/msgboard/topic.asp?TOPIC_ID=20[/url]
... That link will bring you a previous fourm topic and describes how to get the vb.net compiler free, as well as some free and powerfulle IDE resources like SharpDevelop.
[:D] |
VBBR | quote: Originally posted by cbx
Heck the next version of windows (code name longhorn) will be rewritten in .NET! Microsoft is currently in the process of porting all of there software over to .NET so what does that tell you!
That's exactly the problem I have with .NET. It's perfect for Longhorn, really great for Windows XP, good for Windows 98/Me, and useless to Windows 95 (if I'm not mistaken it doesn't work on win95).
Problem is, Longhorn is not out yet and VB6 gives me an ENORMOUS advantage over compatibility. (not to mention a runtime pack 20 times smaller)
Also it's funny how M$ talks about ending DLL version problems with .NET and screws up completely the Managed DX 9.0c distribution. |
sdw | Actually, isn't .Net more compatible than VB6? |
VBBR | What? Where? Considering .NET doesn't even run in Win95... What's your argument? |
cbx | I have always tried not to fuel the fires of petty discontent towards microsoft and there software, ... but alas I am about to bend the rules....
Windows95? Nobody uses windows 95 any more. The majority of users are using at least windows 98 second edition or later. Complaining about a 20 mb download? Tell me what is not a 20Mb or more download nowadays. The DX redist is 36Mb, most game patches are more then 20Mb, etc etc etc, and to top it off, and to hopefully put an end to the M$ slandering, is that the .NET framework is availible through windows update. Not to mention all of the developers out there that are moving there code over to .NET, which means you will have to have .NET installed anyway if you want to run those apps!
I challenge anybody to prove that there is a better alternative to microsoft software! No software, or OS is more easier to use, feature rich and developer friendly etc, then the software microsoft produces. No, I'm not a M$ hater, but I am a M$ crack whore totally addicted to my crack pushing pimping mac daddy! [:p] |
sdw | quote: No software, or OS is more easier to use, feature rich and developer friendly etc, then the software microsoft produces.
Which OS's have you tried out other than windows?
quote: I challenge anybody to prove that there is a better alternative to microsoft software!
Again, have you ever tried other OS's? |
VBBR | Er... do I remember anyone saying that the Unix platform is the programmer's heaven?
Like... 1000 times? |
cbx | How many OS's have I tried,... well lets see All MS OSes since msdos,PCDOS, FreeDOS, about 5 different flavors of linux over the years, The old mac OS's as well as mac OS 10, ... hmmm well I'll change my statment about the OS, the new MAC OS and windows XP I'll grade as even, only because again windows has far more software apps availible for it.
Microsoft should not be scared of Linux in the least. That OS will require far more advancements in terms of ease of use, and pickup and play simplicity. Face it at it's core Linux is a command line OS no different then DOS, supported and hailed as the MS killer by programmers, computer enthusiests, and geeks alike. NOT, I repeat NOT, by grandma and grandpa simpson, and cirtianly not by the millions of people who know next to nothing about computers (or still do not even own one). And that is the problem! It's marketed and promoted by people who are in the know. (IE: have some above average experience with computers)
The last time I made a serious effort towards adopting a new OS was about 2 years ago just before I was really starting to get deep into .NET. That was the last time, and after which, I decided to stop bothering to try other platforms, simply because of having tried to use these other platforms I gained a strong apreciation for the windows OS and the quality of the software that MS truly produces. Try as you may to dis microsoft as "M$" but I don't see YOU managing and supporting the WORLDS PC's. PS: That aint an easy job!!!
I'm sick of listening to all these crying little nobodys complaining that MS is too hard to compete with.... huf huf,... blood pressure rising,... huf huf... tension increasing, starting to cold sweat,... Oh god nooooo! I've been tricked into participating in a rant weather MS is good or bad,... Baaahhhh! Dam you! This is my last post on this thread! You aint gonna get me ranting, no sir! Not going to happen! I'm just going to smile and leave you all to your self distructive ways.... [:p]
Finnaly, Kung Fu Kenobi I say stick with vb.net or heck even c#.net, your life will be much more easier in the long run.
"We are the M$ supporters. Prepare to be assimilated. We will add your technological distinctives to our own. You will adapt to service us. Resistance is futile." - Created by: X ( Hell ya! ) |
Eric Coleman | I think Microsoft makes great products, so I'm not a MS basher. It's difficult to say you hate microsoft when you run a website based off one of their major products. [:)]
However, I do think .NET is not what MS said it was going to be. It is a versioning and security nightmare. For the same reason that IE and ActiveX are so dangerous, they are heavily integrated into the operating system, makes .NET equally dangerous.
There are serious versioning conflicts with the .NET framework. There are 3 major versions, each with their own service packs. A service pack for the 1.0 version will not fix or patch the 1.1 or 2.0 versions, and as far as I've seen, vice versa. A program compiled with the 1.0 Framework may or may not work properly on a computer with 1.1 or 2.0 installed. An end user needs all 3 versions intalled seperately. It's like service packs for Windows NT, you have to install them in order despite what MS says about a SP containing all the fixes of a previous SP. Ask anyone that's ever had to administer an NT box.
Grandma and Grandpa Simpson do not install computer updates unless their geek grandchild fixes their computer for them, so they probably don't have the .NET framework or even automatic patching. And for the record, .NET is not installed through automatic updates. You have to go to the windows website in IE and manually select the option to install .NET. Also, you can not install .NET on a computer unless the computer has certain other service packs or patches installed. This may not seem like a problem to you, but to others it is. Here's an old rant on the problem, http://www.joelonsoftware.com/articles/PleaseLinker.html
.NET is a great idea, but so is world peace. |
cbx | Nice article link eric, but I think it may be missing the point, in the sense that it's not actually our responsibility to ensure the end user has the .NET framework installed. It's microsofts. It's there framework, it's there OS, and they are the ones that need to ensure that it gets installed on peoples systems out there. Lets not forget that we don't need the .NET framework to create apps for end users. And if they want us to use .NET they will have to start making a more proactive aproace to getting .NET onto end users machines. But so far they have done a poor job of this. |
Almar Joling | ^ With Eric.
I think the future is a nice time to learn some languages that can be used icmw. Linux. A nice example is FireFox, which is gaining more and more support right now, even under the 'common' people.
btw, nice article Eric. IT reminded me of this post as well:
http://www.persistentrealities.com/phpBB2/viewtopic.php?t=187
|
Zarneth | quote: Originally posted by VBBR
(try using windows without explorer.exe).
Um. The common novice computer user yes. But to us people here there's many alternatives. I myself use Litestep to replace the taskbar, startmenu, and global keyboard key shortcuts part of explorer. Explorer.exe now only shows in the task mannager now when I'm using the file mannager part of it. And If I ever finish my VB file mannager project I'll have no use for explorer.exe at all. |
VBBR | That's exactly my point. explorer.exe is just a GUI for Windows like KDE is for Linux for example.
The power of an OS resides in its core, the kernel. The rest is just appearance. |
sdw | Actually, I think the better analogy is:
Windows : Dos :: KDE : Linux
Where Windows and KDE are GUI, Dos and Linux are the kernals. |
VBBR | DOS is only the kernel for Windows 3.x and earlier. It was used by the Win95 platform and is dead on NT (Win NT, 2k, XP, 2004). |
Lachlan87 | Thats true if your using Win 9X, But NT/2000/XP kernals are based off Unix, like Linux is. So for XP, explorer is just a GUI for XP brand Unix, like KDE is just a GUI for Linux brand Unix. |
Eric Coleman | quote: Originally posted by Lachlan87
Thats true if your using Win 9X, But NT/2000/XP kernals are based off Unix, like Linux is. So for XP, explorer is just a GUI for XP brand Unix, like KDE is just a GUI for Linux brand Unix.
Umm, no it's not [:)]. NT was a total rewrite of windows, and it's Microsoft's own technology. |
Lachlan87 | That's what I thought too, until I read differently in a book. . .I think it was Windows XP annoyances, but I'm not sure. Of course, the book I read it in may have been full of baloney, but that's why I said what I said. It doesn't matter enough to me to re-find where I read it.
Also possible that I mis-read/mis-remembered. |
Knight Chat X | The new standard is VB.Net, VB.Net is a complete overhual, there is a big learning curve, but things that were difficult before are so simple once you know how to do it, the key is knowing exactly what it takes to perform a specific task.
The main idea with .Net Framework was to make development easier and free up time a developer needs to spend on developing an app and make more functional app's targetted at web communications.
This backfire's when you are so used to VB6 syntax, the values of variable types have changed, example, a long in VB6 is now an integer in VB.Net. Instead of using an array, most the time you use a hashtable to store data. Everything is setup as a class, every object can be stored in other objects and/or transfered accrossed the net. You can create any program and just load the program from an ASP.Net webpage and it won't ask for permission to run the program it just does it which eliminates problems we face today with ActiveX regulations. Most things take only a single line of code to accomplish. Pretty much every Windows API function is embedded and accessible directly from within VB.net, no need to import references you can branch to whatever feature you require. Well, need to add references for some things, like DirectX but can use like Microsoft.DirectX.Direct3D. Security, biggest issue on all .Net languages, to be honest, you can view and dump source code, protecting it as far as I know currently is not possible, you can find tools on net to protect older software, but as for .net apps, those old tools fail. There are programs designed to dump out the exact source code of a .net app, not just unviewable, I'm talking about the actual source code, this freaks me out because the only option a developer really has is to try using obfuscation, which sadly only covers things up, once a dump tool is used the purpose of that is defeated because all the code logic and source is still dumped and code is re-constructed to a human readable form.
So when it comes to VB.Net or VB6, VB.Net is the latest version, but go with whatever you're comfortable with, if you're just starting out and plan on future developments use VB.Net, because VB.Net is very different than VB6, focus on just 1 language at a time, this avoids complications and early confusion, but be open to finding alternative info if need be.
U can actually get VB.Net 2005 for free right now, and that I know of there isn't any restrictions, just take in mind the 2005 tools use .Net Framework 2.0 and up. |
cbx | quote: Originally posted by Knight Chat X
... Security, biggest issue on all .Net languages, to be honest, you can view and dump source code, protecting it as far as I know currently is not possible, you can find tools on net to protect older software, but as for .net apps, those old tools fail.
I don't believe that is correct, I remember watching an episode of The .NET Show [url]http://msdn.microsoft.com/theshow/Archive.asp[/url] when .NET was first comming out and I recall that question being raised durring a demonstration of the ildasm tool. I'm pretty sure they said the .NET framework has tools to encrypt your compiled assemblies but I think they are command line based tools... |
cbx | quote: Originally posted by Knight Chat X
... you can find tools on net to protect older software, but as for .net apps, those old tools fail.
That is because when you compile a .NET app it is being compiled as an IL (Intermediate language) assembly. A .NET app, similar to java apps, are compiled down into a Pusudo Executable, that gets compiled on the fly by the CLR (common language runtime -> the core compiler of .NET) when you run the application. The CLR is responsible for compiling .NET apps at runtime, and turning them into native executable byte code...
For example if you copied a .NET app over to a mac and tried to run it, the CLR would read the apps exe file and compile the IL code within it, into machine code that targets the PowerPC processor and mac platform. If you ran that same app from within windows the CLR would compile the IL code into native x86 machine code targetting the windows platform.
That is of cource if microsoft ever ports the .NET framework over to the mac/unix/lunix platforms. Mono is a good example of this. [url]http://www.mono-project.com/about/index.html[/url]
So .NET apps are not a true executable in the sence that they are not the same as a native vb6 executable. And as such an attempt to use old dissasembly code recontruction software it does not work on them.
Essentally it boils down to an exe compiled in vb6 will not be saved in the same file format as a .NET exe would be.
Hmmm I seem to be blabing on and on don't I? [:0] Ahh the future makes us all hope and wonder doesnt it? |
cbx | Just reading my prev post and had an epiphany, now I know why MS is hesatant to port .NET over to other platforms! Because if they did people would have more of a choice to use say the mac os verses the windows os. Which would give apple more OS market share. Ahhh I see now said the blind man to the deaf man who really wasent listening anyway... |
Knight Chat X | Hmmmm, lol, ILASM is the problem, you pretty much got it figured out, I'll go deeper into history though and maybe you can see what I'm sayin.
That's why we ran into that RPC problem with Blaster not long ago, for anyone searching for RPC on linux you can easily find RPC source code and information on kernel32 available in NT open source code releases, just like the old Winsock/TCP/UDP Socket, without which the Windows OS would probably never have made it, and this convo we're having wouldn't have been possible like this as remote computer communications wouldn't be in the Windows OS and without that ability it would have been like any other OS at the time, gotta remember DOS is short for Disk-Operating-System, it's function is for lower level operating system disk management, not graphical user interface navigation, the command prompt is still there, but file systems have changed and so has the technologies, but the concept is no different.
Back on the topic though, I've been programming since I was 12, 25 now, I remember Command Prompt, GW Basic, QBASIC, VB3, VBA, VB6, Bawk, Assembler, MASM, NASM, Borland, C++, HTTP, Perl, XML, DHTML, ASP.Net, and so many other languages. To be honest, all these languages except Assembler are Higher Level, higher level means they are made up of re-usable copies of previous code blocks, a higher level language is converted to assembly which is the lowest human readable language, then converted into machine language which is the onlything that's really understood by a computer. The majority of languages like C++ & VB, believe it or not, have the same father assembly, lol, the onlything that makes them different is the language and the way the person that made the language set's up the syntax for the language to be used to perform specific tasks, if you wanted you could create your own. Older languages used what's known today as scripting, there were 2 types of method's for a program to run, 1 interpreted, 2 executable (binary compilation of pure assembly), and interpreted language basically reads text, a script, such as QBASIC, and just acts on it, a main program exe reads the script. The exe is nothing more than a compiled program which actually contains executable code embedded. (A raw program dump.) When DLL's came out it changed everything, we could create archived binary machine code which can be accessed and re-used over and over and focus more on the main application development, work on another application and use the same DLL's in it as well, instead of having to waste development time by copying and pasting the same code making the main app bigger each time. Today languages are made of many DLL's and the OS comes with the majority of what's needed, when a new language is released it's common to need what's called runtime files, which is nothing more than a specific collection of DLL's which offers specific language features, core files are usually needed so a program can be intepreted, what I see today is nearly every program language is bloated and dependant on some form of runtime files, example, since C++ and VB require runtime files to run, you may have noticed by now you must also download .Net Framework if you've got Windows XP to run programs created in .Net, the runtime files associated with the language isn't already on your machine with the OS. As far as I can remember the dark secret in programming has been to harness assembler and you can do anything, with the latest changes in technologies and all the bloat, people today are only being educated on what they can see today, and the facts are slowly being covered up with newer additions. It's like telling everyone to use a game engine, once that game engine becomes standard, and is taught in a school, people think it's the only way and don't see what's underneath. I think what I'm getting at is before it was possible to hide information in an exe and make it difficult to decompile, somebody either forgot to close the door to the building and lock it or somebody did it on purpose to let anyone in, and since I've tried everything possible to shut and lock the door, I noticed the door isn't shutting and somebody's trying to charge big bucks for a security system and they know the door's not gonna lock.
I'm not going to give any info related to actually doing it, but I will let you know this if you want to test it on your own app, goto:
[url]http://www.analogx.com[/url]
Download textscan and run it on your compiled exe.
That tool can be used on DLL's, and it doesn't take much to figure out function parameters, weither the program is encrypted or not, with older win32 programs you could strip all that information down to 1 line that said MS-DOS with a program like Jeremy Collakes compressor, once you ran textscan that's the onlything that'd show. Now, with .net the only option that's givin is embedded key and thing to sign, now you can obfuscate your code, but sadly that's useless, all that is doing is changing the text to something funky, and if you want can spend thousands for a tool which claims to protect, the onlyone available seems to be dotfuscator. Even after running such a tool, you can still see everything just as it was before. A program will not run if the data is not correct, but the onlyway to protect the program is to change the compiled data in a way to where it's still readable to the machine, it's a hardware issue not software, as long as you can read all the data from hardware, which must exist for software to function, the data will always be able to be read by a person, to make it simple I'll just say I know these programs can't be secured properly and aren't, they are only focused on preventing common tools, viruses and trojans and prevent patching, but once there is more control of memory management some of these problems won't be as bad and I think that's being worked on right now. |
Knight Chat X | I got worked up on that last post, on a side note I'd like to thank cbx, Eric Coleman, and the others, I think this site is great and hoping for more VB developers/gamers to come here in time, I first came accrossed this site using google.com. Then cbx sent link back to a post here that was related to a common issue I was having, come to find we aren't the onlyones with the problems. So in the long run if more people that have similiar issues come here maybe if somebody finds the solution we can all benefit.
Lastly, there used to be a few very focused VB communities and you could find programs for file sharing that was specific to VB programmers only, you could chat and trade source code, 1 was by Andreas, another CodeJack by Artifact Software. If they still exist might be of some use.
Laterz!
|
Eric Coleman | so what exactly is the problem that being discussed? I'm a bit lost, lol |
cbx | quote: Originally posted by Eric Coleman
so what exactly is the problem that being discussed? I'm a bit lost, lol
OMG eric is lost! No way! I don't believe it! Dude you always seem to have an answer for everything! -> Knight Chat X was seeking a resolution to somehow encrypt or mangle his compiled apps so that others would not be able to decompile them and gain access to the underlying code.
Knight Chat X:
I think I see what your saying, but on the other hand I also disagree. (in part) I have always been a firm believer in free source code, so for me, I'd be glad if someone wanted to take and use my source code for themselves.
Should not the act of code piracy encourage us to create a better more powerfull versions of our apps? If you develop free code in the first place you would not have to worry about people stealing it. By sharing code you breed competition. By all accounts competition is a good thing. Or so they say...
It also reminds me of a show I was watching about lunix versus windows and there's a person who said that people who do not share their code are inherently antisocial and people that do share their code considered more social, or at least do something along those lines. Basically if they were trying to make the point that Microsoft is very antisocial because they do not share their source code for the windows operating system And that the linux community is a much more social because they freely share their source code with others. |
Knight Chat X | I just don't know anymore, I used to feel sameway until people started stealing my ideas and anything I posted on website for their own personal gain to compete that's when I thought differently because the info was being used in a negative way and the people using the info didn't care because to them it was freely available. Free source is how people learn this stuff, in that it's a good thing, I hear about Microsoft's source not being available but the truth is it always has been, in fact, that's the reason security problems have become the way they are now. example:
When Outlook Express & IE interaction source code became available, information related to tampering with security related settings and send emails sparked the internet attacks which we know as an internet worm that was spread through email systems which is to this day what we all face. Because information about the inner working of IE & Outlook were given, nothing stopped the wrong person getting this info and create a program which spamed everyone in their addressbook, put this information into the hands of millions worldwide and before you know it you gotta problem.
Because the lack of knowledge on VB.Net and DirectX9.0c is so little right now it seems like sharing info would be a good thing, sharing source code freely is ok as you've got a choice, the problem is when you have no choice, especially if you are hosting a commercial service or commercial app.
Thanks for the input. |
cbx | Ohh ohhh! I think I may have come up with a solution. See it only took a few minutes of pondering and bing! it hit me! You could protect your VB.NET code by err um,... Not compiling your app!?!
Write your vb.net app as a strongly interface driven application. Then load and compile your apps code at runtime. You will have to create a small app that does this.
Basically you load your previously encrypted source code files, decrypt them, compile them and run them all at runtime! That way the only code that others would be able to pick apart would be the small app that is doing the decrypting and compiling and not your source code.
I guess It would help if I provided a demonstration... and Voila! Not 1, not 2, but 3 examples of compiling code at runtime! By yours truly.
[url]http://www.gpwiki.org/index.php/Tutorials_and_Source_Code[/url]
[url]http://www.gpwiki.org/index.php/VBNET:ScriptingisthepastPart1[/url]
[url]http://www.gpwiki.org/index.php/VBNET:ScriptingisthepastPart2[/url]
[url]http://www.gpwiki.org/index.php/VBNET:ScriptingisthepastPart3[/url]
Or i just had another idea but it is less practical/yet more secure. Why not have your users run your app directly from the internet! The user downloads a small app from the internet, and uses it to run your app. When the app is run it requests the source code for your app through a secure internet connection, your app downloads the encrypted code, decrypts it, compiles it, then runs it all without it saving anything to the hard drive. This would also allow you to ensure that all users are running the latest source code for your app and would be like getting automatic updates for your app! And the end user never has access to your applications source code, because it is never stored on the end users hard drive everything is kept in memory.
You are probably going to have a few questions about this process so it might be best to start a new thread... Further disscussion about this process will surly take a number of paragraphs to explain. But feel free to ask. |
VBBR | Wouldn't "compile on-the-fly" be horribly slow for huge programs? |
cbx | quote: Originally posted by VBBR
Wouldn't "compile on-the-fly" be horribly slow for huge programs?
Depends on what you mean by huge? My computer can compile 100Kbs or more of vb.net code in about 2 seconds flat. Thats a fair ammount of code. And a minimal ammount of time to compile and run it.
But if you are talking an application like MS Word then you would actually only download and run only the parts of the applications source code as your users need them. |
VBBR | Hm, that makes sense. Just compile what you need. Thanks for explaining. |
Eric Coleman | I'm not a hacker, but compiling on the fly is not a safeguard. The code, at one point, must be recognizable by the compiler, i.e. decrypted and available on the target computer, and also it is trivial to hook into the code (especially .NET code) and simply extract the code.
|
Knight Chat X | Bingo Eric, that's what I was tryin to say! [:D]
cbx that idea isn't bad though, would come in handy for a game engine, could setup a custom language for scripting to make loading a level easier. Reminds me of internet explorer, which downloads the source of a webpage then parses it to display a page, IE acts as an interpreter. |
Eric Coleman | Well, the .NET framwork (the end user, not the SDK) does install the C# compiler. There is also a C++ example in the Directx 9.0c SDK that uses C# as a scripting language. However, that's not a solution to any code theft problem.
Code theft seems to be the major point of this discussion, but code modification is just as serious. If you create a multiplayer game and people can decompile and recompile with relative ease (MSIL is high level in my opinion), then cheating would be a really serious problem. I know it's an issue already, but people are limited to the tools that only a select few people create. And personally, I'm paranoid about stuff like that containing viruses and trojans. Also, the difference between custom modifications to a program versus premade cheating tools is that custom mods are your own creation and don't have to follow the same patterns that normal tools (such as aim bots) have that make it apparent that they're being used. |
cbx | quote: Originally posted by Eric Coleman
I'm not a hacker, but compiling on the fly is not a safeguard. The code, at one point, must be recognizable by the compiler, i.e. decrypted and available on the target computer, and also it is trivial to hook into the code (especially .NET code) and simply extract the code.
Really? How can you hook into .NET code on a running .NET app? You also made me think of somthing I had overlooked and that is that the source code you compile may actually be passed to the vbc.exe (vb.net command line compiler) as a temp file!
Actually 1 sec..... Yep it does. I just took a minute to run a modified version of my scripted interface example and used filemon on it and sure enough you can see the code file being called by vbc.exe.
Scripted interface example: [url]http://www.gpwiki.org/index.php/VBNET:ScriptingisthepastPart3[/url]
FileMon: [url]http://www.sysinternals.com/ntw2k/source/filemon.shtml[/url]
Last night I also looked into the possibility of downloading a precompiled dll from the internet and creating objects from it just like the example I gave before, but the problem is you can't seem to load an assembly from a stream only from files. So that would not work either. dang [xx(] |
Eric Coleman | quote: Originally posted by cbx
How can you hook into .NET code on a running .NET app?
I honestly don't know, but you can download the CLR profiler from Microsoft (I found it on the directx download page), it comes with source code. The CLR profiler is limited to profiling your code since that's what it was designed for. Since it can so easily snoop around to see what a .NET program is doing, then I'm sure that it would be easy to make it do a bit more than just profile code. |
Knight Chat X | quote: Originally posted by Eric Coleman
Code theft seems to be the major point of this discussion, but code modification is just as serious. If you create a multiplayer game and people can decompile and recompile with relative ease (MSIL is high level in my opinion), then cheating would be a really serious problem. I know it's an issue already, but people are limited to the tools that only a select few people create. And personally, I'm paranoid about stuff like that containing viruses and trojans. Also, the difference between custom modifications to a program versus premade cheating tools is that custom mods are your own creation and don't have to follow the same patterns that normal tools (such as aim bots) have that make it apparent that they're being used.
Yep, and believe it or not is same reason 1 antivirus program will only pick up commonly reported virus/trojans and not 1 antivirus will pick up all, a custom virus or trojan will not be detected unless it uses a familiar pattern of an unpatched system, it takes multiple program submissions and deep analysis to determine what is really going on in which a person has to manually type pattern information (eg. Registry entries created/modified, file/folder changes) into a file known as a definition file, a scan engine simply loads the file and uses for pattern comparisons. A reason programs are left in a way you could undo them might be so analysis like this can be easier. The problem is at the root in that once you have a human readable source form that's visible is where theft can occur, hardware and software are designed in a way that allow information to be read straight from the CPU registers and memory still.
Luckily, Microsoft may have a grip on this in future operating systems as it seems memory control is going towards the route of a single file system stored in memory with extremely restricted access to memory operations which will be almost invisible.
I agree, on the gaming aspect this enables cheating and has been happening, I remember playing America's Army one time and somebody noticed a player was hovering in mid air and shooting down below in which immediately after the game suddenly came to a close.
|
cbx | quote: Originally posted by Knight Chat X
[quote]Originally posted by Eric Coleman
<br>
I agree, on the gaming aspect this enables cheating and has been happening, I remember playing America's Army one time and somebody noticed a player was hovering in mid air and shooting down below in which immediately after the game suddenly came to a close.
lol Or maybe he was simply a genetically engeneered super soldger! |
Knight Chat X | Haha, too funny! [:o)] |