blogs - personal


the corner cafe

a good friend of mine Shem

blogs - techincal


mark russinovich

a software engineer and author who works for Microsoft

michael howard

a simple software security guy from Microsoft

larry osterman

confessions of an old fogey

raymond chen

the old new thing

joanna rutkowska

the official blog of invisiblethings.org

joel spolsky

joel on software

michael lopp

rands in repose


contact


gmail

minfinitum@gmail.com

hotmail

minfinitum@hotmail.com

No Signal

Posted: 12/07/2008

This is an attempt to list some information in the event that it may help.

I recently run into an issue with my pc where my monitor would lose signal (no signal) and present me with a blank/black screen. This happened at the "welcome" screen of the normal windows start up process. When the monitor had lost signal, I noticed that if I turned my monitor off and then on, the picture would be displayed as normal, but at a very low resolution 1024x768 or 800x600. Next thing I noticed after logging in was that the monitor was set to "Generic Non PnP Monitor" (not sure if that causes any issues) . I was also not able to select any resolution above 1024x768. Booting in safe mode didn't seem to have the same issue, and the default window drivers also didn't have the same issue (in fact I could actually change the resolution above 1024x768!!!).

After uninstall/re-installing various drivers for the Nvidia 9800 GTX (using Driver Cleaner Pro to force a clean installation, and drivers 175.16, 175.19, etc...), I noticed that the nvidia control panel in the "Manage custom resolutions" settings had the "Treat as HDTV" option enabled. This seemed very odd and my guess is the drivers are detecting my monitor as an actual tv. My monitor is actually a Chimei 221D (actually a very nice LCD monitor). Now I also tried various things to attempt to correct the detection (some web sites suggest resetting the EDID) but nothing seemed helped.

What did help was simply turning off my complete workstation at the wall socket and letting the complete system rest for 5 minutes and turning everything back on!!!. The next time I booted, all was back to normal. Resolution was correct, options in the nvidia control panel were as they should be and I was happy!

I've been told you guys in other parts of the world don't have wall socket switches, so I suggest unplugging the devices from the wall. Especially ensure you unplug your monitor and pc (just to be clear here)... The really sad thing here is that I experienced the exact same issue with a ATI X1950 AGP card! But in that instance most people had put it down to power supply (and I spent some $$$ trying to correct it). Although I have a suspicion that it is the same issue and can recall doing a complete power off also!!!

Top Gear Map

Posted: 11/06/2008

I've been playinng GRID lately and although is a great game (the visuals have to be seen to be believed) sometimes it seems the ai cars have a little more grip then I do! I mean when traveling the same speed, same make/model car, following the same race line and I fly off into the barrier... it seems somethings up Jim!
Here is two vids of the game... vid 1 and vid 2.

Free stuff

Posted: 27/05/2008

After re-installing my operating system (new pc, not the usually reasons ...), I have been looking for a "nice" decompressing tool and a "nice" notepad replacement. Oh and when I mean "nice"; I want something that is free, small, and does it's job well (is that too much to ask). Let me introduce you to jZip and PSPad. Oh and I have my blue badge.

Back baby

Posted: 07/05/2008

I'm back after having an awesome 12 day cruise around Fiji, New Caledonia and Vanuatu. Of all the islands visited, Vanuatu was easily the best, from the crystal clear water to the friendly inhabitants!

Obviously I have a heap of photos, but I can't really be ass'd putting them up here. Oh and it seems I re-discovered facebook ... and you know there is no way I'm going to have time to manage both!

Cruisin

Posted: 16/04/2008

Well, finally some interesting news. I have finally received my contract from Microsoft!
What does that mean? Well that means I'm going to start working there in the next couple of weeks. Should be interesting... (I seem to be saying that allot lately).

Published

Posted: 10/04/2008

In my brief stint in the anti-virus research area, one of my research tasks has actually been published! Link to article: Win32/SillyAutorun.D

It's nothing really nasty or difficult, but interesting all the same.

Please reboot to complete the update process...

Posted: 09/04/2008

Well it seems I have finally updated the web page. Not sure I like it yet...
Although I'm not going to try and fool anybody, it probably won't get any better!

Oh and the previous items are from a web blog I was maintaining at work.
There is lots of interesting stuff, that I really don't want to lose.
My intentions are to keep this site updated with various things I come across during my hours of "play". It should be interesting...

Tschüs

Fuzzing

Posted: 31/03/2008

Fuzz testing or fuzzing is a software testing technique that provides random data ("fuzz") to the inputs of a program. If the program fails (for example, by crashing, or by failing built-in code assertions), the defects can be noted.
Fuzz testing is often used in large software development projects that perform black box testing. These usually have a budget to develop test tools, and fuzz testing is one of the techniques which offers a high benefit to cost ratio.
However, fuzz testing is not a substitute for exhaustive testing or formal methods: it can only provide a random sample of the system's behavior, and in many cases passing a fuzz test may only demonstrate that a piece of software handles exceptions without crashing, rather than behaving correctly. Thus, fuzz testing can only be regarded as a bug-finding tool rather than an assurance of quality.

Push and Shove

Posted: 31/03/2008

PUSH + RET = JMP

Jump

Posted: 31/03/2008

Jump table starts with: FF 25

Finding VB OEP

Posted: 31/03/2008

Search for "VB5!", note address.
Address of string is pushed onto the stack.
ThunRTMain is called

Jump

Posted: 31/03/2008

Jump table starts with: FF 25
PUSH XXXX - XXX = address of VB5!
CALL XXXX - XXX = address of MSVCVM60.ThunRTMain

Developmestruction

Posted: 31/03/2008

I found a new word today: developmestruction
A development / test / production environment.

Syntactic Sugar

Posted: 31/03/2008

Meaning something that, like sweets, isn't necessary, but tastes good.

Parameter vs Argument

Posted: 31/03/2008

Parameter comes from term "formal parameter" (subroutine parameter).
Argument comes from term "actual argument" (argument value).

void func(int n, char * pc); //n and pc are parameters
template class A {}; //T is a a parameter

int main()
{
char c;
char *p = &c;
func(5, p); //5 and p are arguments
A a; //'long' is an argument
A another_a; //'char' is an argument
return 0;
}

To fault or not to fault

Posted: 31/03/2008

Error: An error is something that you do wrong.
Fault: A fault is the consequence of an error.
Failure: A fault may cause a failure. It may not.
Bug: The term bug is a colloquialism, often used as a synonym for fault.

Many fragments. Some large, some small...

Posted: 31/03/2008

Unit Test: The testing of atomic units: each class or function.

Component Test: Validates the combination of one or more units into a full component (often this is what people mean by unit test).

Integration Test: Tests the combination of components as they are brought together in the system, ensuring that they interconnect properly.

Regression Test: This is retesting after fixes or modifications are made to the software or to its environment.

Load Test: Tests to ensure that your code can handle the expected volume of data being thrown at it.

Stress Test: Tests that throw a huge amount of data at the code within a short space of time to see what it does.

Soak Test: The focus is on running at a high load for a prolonged period of time—several days, weeks, or even months—to identify any performance problems that appear after a large number of operations have been executed.

Usability Test: Ensures that your software can be used easily by a short sighted gerbil.

Black vs White

Posted: 31/03/2008

Black Box Test: Tests compare actual functionality against intended functionality (functional testing).
White Box Test: It is a code-coverage–based approach. Each line of code is scrutinized systematically to ensure correctness (structural testing).

Malfunction. Need input

Posted: 31/03/2008

Good input, Bad input, Boundary values, Random data and Zero.

Bugzilla Guidelines

Posted: 31/03/2008

Be precise.
Be clear - explain it so others can reproduce the bug.
One bug per report.
No bug is too trivial to report - small bugs may hide big bugs.
Clearly separate fact from speculation.

Bugzilla Preliminaries

Posted: 31/03/2008

Reproduce your bug using a recent build of the software, to see whether it has already been fixed.
Search Bugzilla, to see whether your bug has already been reported.

Heap

Posted: 31/03/2008

NoMansLand (0xFD) - The "NoMansLand" buffers on either side of the memory used by an application are currently filled with 0xFD.

Freed blocks (0xDD) - The freed blocks kept unused in the debug heap's linked list when the _CRTDBG_DELAY_FREE_MEM_DF flag is set are currently filled with 0xDD.

New objects (0xCD) - New objects are filled with 0xCD when they are allocated.

The 10% of people who know the least, make 90% of the noise...

Posted: 31/03/2008

Enough said...

Never-ending Quantum

Posted: 31/03/2008

In NT, as with most time-sharing operating systems, threads run in turns called quantums. Normally, a thread executes until its quantum runs out. The next time it is scheduled it starts with a full quantum. However, in NT a thread also gets its quantum refreshed every time its thread or process priority is set. This means that a thread can reset its quantum by calling SetThreadPriority (without changing its priority) before its turn runs out. If it continues to do this it will effectively have an infinite quantum. Why does NT do this" Its not clear, but it appears to be a bug.

From msdn article: Systems Internals Tips and Trivia

The Jedi Way

Posted: 31/03/2008

I usually create a small unit test app when I'm trying to find out how things work.
Today I found that somebody has coined the term "The Jedi Way" or "Star Wars Consult" in the immortal words of Obi-Wan Kenobi - "Use the source Luke!"

Threats - STRIDE

Posted: 31/03/2008

Spoofing - When an attacker pretends to be someone they're not. Use authentication.

Tampering - When the attacker modifies data in transit. Use digital signatures and message authentication codes.

Repudiation - When an attacker can perform a task you can not verify. Use secure logs and audit records.

Information disclosure - When an attacker can access data that is they should not have access to. Use encryption and ACLs.

Denial of service - When an attacker can degrade or deny service to users. Use ACLs, firewall filter rules, disk and processor quotas, design patterns that allow high availability.

Elevation of privilege - When an attacker has the ability to gain privileges that they'd not normally have. Use ACLs and other forms of permission checks and input validation.

From Larry Osterman's weblog.

Threat Model - Elements

Posted: 31/03/2008

External Entities: Spoofing, Repudiation. Since an external entity could be anything, including the human being interacting with the component, Tampering, Information Disclosure, Denial of Service and Elevation of Privilege threats don't really make sense). On the other hand, you can absolutely spoof a human being, and human beings can repudiate operations.

Processes: Processes are subject to all of the STRIDE threats (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege).

Data Stores: Tampering, Information Disclosure, Denial of Service (as I mentioned above, EoP etc don't really apply to static stores), and repudiation.

Data Flows: Tampering, Information Disclosure, Denial of Service.

From Larry Osterman's weblog.

Dll's the real story

Posted: 31/03/2008

This is another example of how a relatively small change to an application (removing a dependency on shlwapi32.dll) can have significant benefits to the application - as I've mentioned in previous posts, each DLL you load consumes 4 private pages and takes between 500 thousand and a million cycles to load. If you can remove that dependency, your application will thus load faster.

From Larry Osterman's weblog.

Malware Vmware Detection

Posted: 31/03/2008

Malware routines check where IDT (Interrupt Descriptor Table) is located in memory, at which memory address. Normally, a Windows-based pc locates IDT at address 0x80xxxxxx but emulated machine locate it in different memory address spaces. VMWare, for example, locates IDT at 0xffxxxxxx address whilst VirtualPC locates it at 0xe8xxxxxx address. So, routine checks if the IDT memory address is major of 0xDxxxxxxx. If so, then dll is running on a emulated machine and stop its infection payload.

From Marco Giuliani: The strange case of Dr.Rootkit and Mr.Adware

Lessons Learned Building More Secure Software

Posted: 31/03/2008

It's Not Just the Code
Fix Old Code First
Deprecate! Eliminate! Eradicate!
Tools Are Critical - to a Point
Automate!
You'll Never Reach Zero Security Vulnerabilities
Security Is a Never-Ending Battle
There Is No Security Silver Bullet
The "Many Eyeballs" Mantra Is Right!
Today's Denial of Service Is Tomorrow's Exploit

ANT Config

The ant.bat script makes use of three environment variables - ANT_HOME, CLASSPATH and JAVA_HOME. Ensure that if these variables are set, they do not have quotes (either ' or ") and they do not end with or with /.