Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

A Guide to Windows Hacking for Mac Users?

I am a long-time Mac user looking to gain a decent understanding of Windows. I want to be able to control the environment, understand how the OS fits together and, eventually I guess, think about application development. I'm not really interested in the history except as it is still relevant to Windows 7.

I'm competent with the Mac and UNIX/Linux environment. I live in C, Objective-C, Bash, Python, JavaScript, AppleScript and PHP. As such I want something that is introductory but not aimed at beginners.

Can anyone recommend a decent book (or other resource) to get me started?

TIA

like image 664
Carlton Gibson Avatar asked Jan 19 '26 08:01

Carlton Gibson


2 Answers

Superficially

Just start using the languages.

Deeper - good places to start digging

  • Window Manager: Read a Windows GUI Hello World C program source code. You should know that things such as WM_ messages exist and know the common types and at least a couple of obscure ones that windows.h uses so you get the feel of Windows APIs. Will probably still use a higher level toolkit like Windows Forms.
  • Registry: It exists. Get a rough idea of how COM component registration and file association and application settings are done.
  • File folders: Read about the layout of user profiles and the important stuff in the machine as a whole including hidden files and folders.
  • COM: Get your head round IUnknown and structured files at a high level. Know that COM != .NET but it is still around.
  • Services: Read about how services are started up and shut down.
  • Authentication: Read in the Win32 API about security APIs. Know the difference between admin and SYSTEM accounts.
  • Scheduling: Read about C Win32 API threading, synchronisation and interlocked operation primitives.
  • Kernel: Read articles comparing Linux, Mac and Win32 execution models, and search for tuning parameters.
  • Display: There are lots of APIs for the screen: DirectX, GDI, GDI+. Get your head round how to stop these different APIs fighting with each other.
  • .NET: Read about the .NET garbage collector and how .NET and non-.NET code interact and are scheduled in the same process at a low level.
  • ADO: Run some tests using C# to see what performance and concurrency you get.
  • WinSock: See GLIB source code for how to cope with differences in Sockets API.

Finally know that you cannot fork Win32 processes in Windows, and that apps are attached at a deep level to licensing related "Desktop" and "Window Station" objects.

like image 67
martinr Avatar answered Jan 21 '26 03:01

martinr


This Petzold guy pretty much "wrote the book" for Windows programming when it first came out, and he's still going (http://www.charlespetzold.com/books.html)

like image 32
Arthur Kalliokoski Avatar answered Jan 21 '26 01:01

Arthur Kalliokoski



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!