In one of his earlier posts the author told about the App Varifier tool that allows programmers to find various bugs by stressing memory and therefore causing the program to crash if there are errors of memory allocation and release. In this post the author describes two issues occurring on 64-bit Windows that make it difficult to use the crashing method, as the system either cannot track these crashes, or ignores them at all. The reasons and workaround are explained.
Mike Wall concentrates upon the aspect of optimizing and boosting performance of code during porting. Starting with an explanation of AMD64 architecture's advantages, the author discusses several methods of increasing code's performance including use of compiler switches, intrinsic functions, assembly and many more. In addition he also describes advantages of using CodeAnalyst tool when optimizing the code. In the article you will find some useful examples of code.
In his post, Bruce Dawson explains what technique he and his Valve team use to find and fix 64 bits related pointer truncation bugs. A code sample is taken as an example.
The article explains the differences between 32-bit and 64-bit systems from the viewpoint of the entire system structure consisting of three components or levels: CPU, operating system and applications. The basic principles of architectural arrangement are explained, and the common questions about 32-bit and 64-bit systems are addressed.
The WOW layer present in the 64-bit Windows and the redirection mechanism it employs causes troubles for IT-security tests. The article explains the nature of these troubles and tells how to adapt existing analysis tools to handle this issue.
The author uses a sample code to show how to set compiler and linker options to build a C++ application for 64-bit Windows. Each step is commented upon.
This post describes the stack frame layout of the x64 architecture focusing mainly on Linux and other operating systems that follow the official System V AMD64 ABI. The author gives diagrams and code samples to show the specifics of stack frame layout on the x64 platform.
The article presents a large research on the TDSS family of malware programs and consists of three parts each of which describes certain aspects of the TDSS rootkits and bootkits, including internals of the malware, mechanisms of rootkit distribution, specifics of bootkit installation on various systems (x86 and x64) and embedding into the bootsector. The processes of infecting the system are described in detail and illustrated by plenty of tables, schemes and figures.
Since 32-bit applications are still popular and are actively used on 64-bit systems, it is good to know some typical issues of the Windows 32-bit on Windows 64-bit layer (WOW64). The paper concerns issues related to limitations of WOW64, mechanisms of registry redirection and registry reflection, file system redirection mechanism, references to files and variables, binding to 32-bit and 64-bit DLLs, application installation and startup and kernel-mode drivers. In the related sections, the author tells how to avoid these problems. The paper also demonstrates some techniques of handling 32-bit and 64-bit applications on WOW64. At the end you will find a brief list of best practices to stick to when working with 32-bit programs on WOW64.
Processor and cache topology information is important to manage various processor practices such as task scheduling, performance optimization, licensing policy enforcement and so on. The paper discusses the principle of processor topology enumeration algorithm and specifics of its implementation in the Intel® 64 architecture processor. The author also touches upon cache topology enumeration. The paper has some illustrative schemes and an appendix for the examples.