I don't understand what you're saying. If you mean that C programs are easily infected by viruses, they are no more subject than any other program. If you're saying that a virus can be written with more power and control in C, then you're right when comparing it to VB.NET or C#.NET, but not when comparing to languages like Pascal.
No.
Modern compilers generate executables that load the code into read-only sections in memory. This is partly to prevent accidentally overwriting code, and partly to prevent exploits that take advantage of buffer overflows.
Self-modifying code is vital to write proper viruses.
? Changing a memory section is easy. VirtualQueryEx + VirtualProtectEx for run-time manipulation or memory map a file and use ImageNtHeader function and mess with the sections :p Then add another section (have to do some offsetting), create a jmp to that section and have some custom code then jmp back =D (would require converting the asm into an unsigned char array)
Could even make it generic and add in your own assembler =D then users could write their own assembly to run before program runs at original OEP
Yeah Helios, I've written a on of hooks and self-modifying applications for reasons that I cannot discuss here, though I can say that they're NOT for malicious intent and they're not viruses. They were done in C with a hair of ASM. These things could not be done in something like VB or .NET.