...

View Full Version : Roll My Own



-Fabez-
10-16-2008, 06:01 PM
As a way of practising my coding abilities I would like to make several projects, however I am unsure about how to start or where to go from there. Below are the projects I would like to make along with some information about each one.

1) An operating system: Only a basic one, perhaps using the Linux kernel and moving on from there like in Linux From Scratch. The trouble with this one is all of the sites I have been through don't explain in a clear, detailed manor. However I do know I will need to make a boot-strapper and other such programs, but don't know how.

2) Password protecting a file: I want to create a small program that will combine any chosen .Exe file with another .Exe that will check for a password and run the password protected .Exe if the password provided is correct. The end result of merging the two files would be a .Exe that will execute the password .Exe first as well as the first .Exe having access to the second one and vice-versa.

3) Remote learning software: A good example of this is ClassLink, but I have no idea which language to use or where to start. Any pointers or advice would be much appreciated.

4) Windows GUI editor: A small tool to change the look of Windows Xp's or Windows Vista's GUI, like the close and minimize buttons and the title bar in windows, with little overhead

Millenia
10-16-2008, 07:09 PM
Well for number 1, you are asking a lot. I don't think you understand how much you are asking. Linux from scratch is the EXTREME basics. Before embarking on that journey of years of coding, I recommend you stick to programming basics. If you still want to do it, then Linux from scratch is the easiest thing you could use, it's a powerful tool.

http://www.linuxfromscratch.org


But to me it sounds like you don't have much programming knowledge. If I were you I would teach my self the language, then making programs would be much easier. Programming is common sense once you have got the syntax.

-Fabez-
10-16-2008, 07:21 PM
Well for number 1, you are asking a lot. I don't think you understand how much you are asking. Linux from scratch is the EXTREME basics. Before embarking on that journey of years of coding, I recommend you stick to programming basics. If you still want to do it, then Linux from scratch is the easiest thing you could use, it's a powerful tool.

http://www.linuxfromscratch.org


But to me it sounds like you don't have much programming knowledge. If I were you I would teach my self the language, then making programs would be much easier. Programming is common sense once you have got the syntax.

Contrary to your opinion, I am actually skilled with many languages. If you are implying that these are simple projects, then you are quite welcome to provide some help instead of posting completely wrong opinions. In my opinion, your opinion is based on nothing and you are more intent on providing negative opinions that actually helping.

Millenia
10-16-2008, 08:01 PM
Contrary to your opinion, I am actually skilled with many languages. If you are implying that these are simple projects, then you are quite welcome to provide some help instead of posting completely wrong opinions. In my opinion, your opinion is based on nothing and you are more intent on providing negative opinions that actually helping.

Well I'm sorry, :) But anyway, you probably know more than me about this...I'm terrible with file management stuff. So I can't help you there.

I apologize :rolleyes:

(By the way, I didn't try to be negative, but my grammar skills are horrible)

-Fabez-
10-16-2008, 08:36 PM
Im sorry to, I jumped to conclusions :D But thanks for the rest of your input :D

oracleguy
10-17-2008, 03:22 AM
In reference to writing your own OS: Have you ever written any programs in assembly?

-Fabez-
10-17-2008, 07:48 PM
In reference to writing your own OS: Have you ever written any programs in assembly?

No I have not as there is no clear indication of which version will work with most computers. Any tutorials or advice on learning would be appreciated :D

oracleguy
10-18-2008, 06:50 PM
No I have not as there is no clear indication of which version will work with most computers. Any tutorials or advice on learning would be appreciated :D

Assembly language is dependent on the processor architecture. So it depends what your target architecture is. If you want the code to run on x86 based computers (386, 486, Pentiums, Core, Core 2, Xeon, etc.) then use the Intel x86 assembly language. Assembly language is written in the actual instructions that are executed by the processor so as long as the processor supports all the instructions you are using the program will execute.

-Fabez-
10-18-2008, 07:05 PM
Thanks, that clariflies a lot of things :D I am currently reading through the tutorials on this website, http://www.brokenthorn.com/Resources/OSDevIndex.html , and seeing how things pan out. Which coding languages can I use when creating my Os ? I know assembly and C can be used, but dont know where C can be used.

oracleguy
10-18-2008, 08:54 PM
Thanks, that clariflies a lot of things :D I am currently reading through the tutorials on this website, http://www.brokenthorn.com/Resources/OSDevIndex.html , and seeing how things pan out. Which coding languages can I use when creating my Os ? I know assembly and C can be used, but dont know where C can be used.

For the initial stages you can only use assembly and for the later stages you can use C. However you will have to write your own standard library of C functions because things like printf and scanf won't exist because they are platform dependent. I've written an OS once for an embedded device that supported multi-threading and dynamic memory allocation however the hardware was much less complex that an entire x86 based system. I would say if you can get your OS to boot up in real mode and have a prompt on the screen where you can read keyboard input, that's a pretty good checkpoint.

You might want to consider buying a book on the x86 architecture because you'll need to know how the processor works and how they implement interrupts and memory segments (among other things).

You don't necessarily have to write your own boot loader you could use an already existing one like lilo or grub. I would also recommend developing your OS in a virtual machine at first since it will be easier to make changes and test them.

oesxyl
10-19-2008, 12:27 PM
Thanks, that clariflies a lot of things :D I am currently reading through the tutorials on this website, http://www.brokenthorn.com/Resources/OSDevIndex.html , and seeing how things pan out. Which coding languages can I use when creating my Os ? I know assembly and C can be used, but dont know where C can be used.
take a trip, :)
http://tunes.org/Review/OSes.html
http://www.cs.utah.edu/flux/oskit/

best regards

ghell
10-19-2008, 05:01 PM
You don't necessarily need to use assembly. Your suggestion of using an existing kernel and building on that might mean that you could stick to C. The kernel should provide you with some system calls to do things like start processes or get file handles.

However (and I mean no offence by this), your first post does imply that you don't really realise the size of what you are trying to do, which is probably why Millenia assumed that your knowledge was limited.

You could take a look at menuet, a little OS written from scratch by one guy for both 32 and 64bit entirely in assembly.

Personally, I would love to make an operating system that incorporates a DBMS (for example, the entire file system would just be a set of BLOBs, etc) but these are 2 of the biggest pieces of software that you can possibly write and even with years of experience and working on it 24 hours a day, it would take one person many, many years to produce anything close to that.




Password protecting an executable file on windows, you have to bear in mind that both files need to be on the disk so it would not be possible to actually stop the original file from being run, only to make it so that if you try and run the original file from the protection application, the password is needed. I have tried in the past to embed an executable file inside another on windows and only start it under certain conditions but with no success (at least not without dumping the exe to a temporary file anyway). You could write something that modifies the original exe a bit, adding some extra code into it and then changing the entry point. The code that is added in could do things like require a password but the security provided wouldn't be fantastic and you have to look at existing tools like asprotect (that doesn't offer much protection but can do exactly this) or Themida (that offers good protection but causes problems with certain free antivirus suites and doesn't let you modify the code near the new entry point)

-Fabez-
10-19-2008, 05:07 PM
Thanks for your input, the Os idea was to get an understanding of what is involved so, so I was not aiming to finish an Os, just make parts of one to get an understanding of how they work. For the password protection program, I am using ADS's now, but they only work with NTFS file systems, however they are an effective solution.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum