Git Product home page Git Product logo

binee's Introduction

binee (Binary Emulation Environment)

Binee is a complete binary emulation environment that focuses on introspection of all IO operations. Primary goals for this project are to provide a flexible environment for determining a binaries side effects on the system.

The goals Binee tries to solve are the following:

  1. Realistic loading of a PE file and its required dependencies. The userland memory should look as close to a real execution as possible.
  2. Easy to use hooking framework. We want to create a flexible hooking framework that allows the analyst to rapidly implement new hooks and capture data.
  3. Mock out as much of the OS internals as reasonably possible. Currently, there are small mocks of the file system, registry, threading and TIB/PEB structures for Windows.
  4. The OS environment, as much as possible, should be defined in a configuration file. This enables rapid movement from environment to environment.

If you choose to use Binee to emulate portions of Microsoft Windows, you are solely responsible for obtaining any necessary rights and licenses from Microsoft.

Development and Support

Please feel free to submit github issues or if you want to talk with us directly, come join is in slack

slack workspace

DEF CON 27 Materials

slides

demo video

presentation

Setup and developing in Docker container

If you are running Binee on Microsoft Windows, you can skip the mock file system step.

Most malware will require at least some standard DLLs and these DLLs will need to be accessible from the mock file system. The default "root" mock file system is located in os/win10_32/. In order to allow for the malware to load up DLLs you will need to copy them into the appropriate location within the mock file system. Typically, these should be copied into, os/win10_32/windows/system32/. Currently, only 32-bit DLL's pulled from a 32-bit Windows installation are supported. Once you have the required files in that directory, you can move onto the compiling and running step.

Compiling and running

Build with the following docker command docker build -t binee .

docker run -it -v $PWD:/bineedev/go/src/github.com/carbonblack/binee binee bash

Download Golang dependencies and build Binee

root@2b0fee41629f:~/go/src/github.com/carbonblack/binee# go build

Note: presence of go.mod file will direct the build utility to collect dependencies upon build, and also allow for the repository to be cloned and developed at any path (regardless of $GOPATH) directory

At this point you should be able to execute binee within the Docker container and see the usage menu.

root@6a6fe8c2b2a7:~/go/src/github.com/carbonblack/binee# ./binee -h
Usage of ./binee:
  -A    list all apisets and their mappings
  -a string
        get the real dll name from an apiset name
  -c string
        path to configuration file
  -d    show the dll prfix on all function calls
  -e    dump pe file's exports table
  -i    dump a pe file's imports table
  -j    output data as json
  -l    call DLLMain while loading DLLs
  -r string
        root path of mock file system, defaults to ./os/win10_32 (default "os/win10_32/")
  -v    verbose level 1
  -vv
        verbose level 2

If you are running on Microsoft Windows and/or you have your mock file system configured properly, you should be able to execute all the PE files within the tests/ directory.

root@6a6fe8c2b2a7:~/go/src/github.com/carbonblack/binee# go build && ./binee tests/ConsoleApplication1_x86.exe 
[1] 0x2190c0b0: F GetSystemTimeAsFileTime(lpSystemTimeAsFileTime = 0xb7feffe0) = 0xb7feffe0
[1] 0x21905b40: P GetCurrentThreadId() = 0x0
[1] 0x219138d0: P GetCurrentProcessId() = 0x2001
[1] 0x2011ef30: P GetCurrentProcessId() = 0x2001
[1] 0x21905b50: F QueryPerformanceCounter(lpPerformanceCount = 0xb7feffd8) = 0x1
[1] 0x2190c500: F IsProcessorFeaturePresent(ProcessorFeature = 0xa) = 0x1
[1] 0x213af570: F _initterm_e(PVFV = 0x4020d8, PVFV = 0x4020e4) = 0x0
[1] 0x213af970: F _initterm(PVPV = 0x4020cc, PVPV = 0x4020d4) = 0x0
[1] 0x213be980: F __p___argv() = 0x7ffe0004
[1] 0x213b96f0: F __p___argc() = 0x7ffe0000
[1] 0x213bec50: F _get_initial_narrow_environment() = 0x7ffe0000
[1] 0x213ac0a0: P __acrt_iob_func() = 0x5dda9c68
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'GENERIC_READ = 0x%llx\n', p0 = 0x80000000) = 0x403380
[1] 0x213ac0a0: P __acrt_iob_func() = 0x403380
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'GENERIC_WRITE = 0x%llx\n', p0 = 0x40000000) = 0x403380
[1] 0x213ac0a0: P __acrt_iob_func() = 0x403380
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'INVALID_HANDLE = 0x%llx\n', p0 = 0xffffffff) = 0x403380
[1] 0x213ac0a0: P __acrt_iob_func() = 0x0
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'CREATE_ALWAYS = 0x%x\n', p0 = 0x2) = 0x403380
[1] 0x213ac0a0: P __acrt_iob_func() = 0x403380
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'FILE_ATTRIBUTE_NORMAL = 0x%x\n', p0 = 0x80) = 0x403380
[1] 0x213ac0a0: P __acrt_iob_func() = 0x403380
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'ERROR_SUCCESS = 0x%x\n', p0 = 0x0) = 0x403380
[1] 0x21913b80: F CreateFileA(lpFileName = 'malfile.exe', dwDesiredAccess = 0xc0000000, dwShareMode = 0x0, lpSecurityAttributes = 0x0, dwCreationDisposition = 0x2, dwFlagsAndAttributes = 0x80, hTemplateFile = 0x0) = 0xa00007b6
[1] 0x2196bfbe: F VerSetConditionMask() = 0xa00007b6
[1] 0x213ac0a0: P __acrt_iob_func() = 0xa00007b6
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'out = 0x%x\n', p0 = 0xa00007b6) = 0x403380
[1] 0x2196bfbe: F VerSetConditionMask() = 0x403380
[1] 0x213ac0a0: P __acrt_iob_func() = 0x403380
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'out = 0x%x\n', p0 = 0x403380) = 0x403380
[1] 0x2196bfbe: F VerSetConditionMask() = 0x403380
[1] 0x213ac0a0: P __acrt_iob_func() = 0x403380
[1] 0x213bb710: F __stdio_common_vfprintf(stream = 0x0, format = 'out = 0x%x\n', p0 = 0x403380) = 0x403380
[1] 0x21bc0780: P memset(dest = 0xb7feff1c, char = 0x0, count = 0x58) = 0xb7feff1c
[1] 0x21914000: F WriteFile(hFile = 0xa00007b6, lpBuffer = 0xb7feff10, nNumberOfBytesToWrite = 0xb, lpNumberOfBytesWritten = 0xb7feff0c, lpOverlapped = 0x0) = 0xb
[1] 0x2190c500: F IsProcessorFeaturePresent(ProcessorFeature = 0x17) = 0x1
[1] 0x2190fef0: F SetUnhandledExceptionFilter(lpTopLevelExceptionFilter = 0x0) = 0x4
[1] 0x21927950: F UnhandledExceptionFilter(ExceptionInfo = 0x402100) = 0x1
[1] 0x219138c0: P GetCurrentProcess() = 0x1
[1] 0x20122cb0: P GetCurrentProcess() = 0x1
[1] 0x21910690: F TerminateProcess(hProcess = 0xffffffff, uExitCode = 0xc0000409) = 0xffffffff

Compiling on windows:

1-Install MSYS64/32 : https://osdn.net/projects/mingw/releases/
2-update the system packages :
$ pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
-restart MSYS then update everything else :
$ pacman -Su

To compile for Windows 32-bit, run:

  $ pacman -S python2
  $ pacman -S make
  $ pacman -S mingw-w64-i686-toolchain

To compile for Windows 64-bit, run:

  $ pacman -S python2
  $ pacman -S make
  $ pacman -S mingw-w64-x86_64-toolchain

-install Go :
pacman -S mingw-w64-x86_64-go

3-restart MSYS again ; then clone into unicorn and install it:
git clone https://github.com/unicorn-engine/unicorn
cd unicorn
./make.sh
./make.sh install

4-Clone Binee and Build cd binee
go build

binee's People

Contributors

jgarman avatar jholowczak avatar jholowczak-cb avatar jnishikawa-carbonblack avatar kgwinnup avatar kgwinnup-cb avatar knightsc avatar mennaessa avatar mewmew avatar mmn3mm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

binee's Issues

inconsistent definition of nameToHook key in AddHook and ResolveNameToHook

The AddHook and ResolveNameToHook functions both define key of nameToHook to resolve names of hooks. However, they do so in different ways.

AddHook uses only the function name as the key of nameToHook and ResolveNameToHook uses both the library name and the function name, joined by a : separator.

Seeing as ResolveNameToHook is not used anywhere in the code base, I suggest removing it to avoid confusion in the future.

From winemulator.go:

func (self *WinEmulator) AddHook(lib string, fname string, hook *Hook) {
	self.nameToHook[fname] = hook
}

From hooks.go:

func (emu *WinEmulator) ResolveNameToHook(lib, function string) *Hook {
	return emu.nameToHook[lib+":"+function]
}

Multiple issues with OpenFile()

There are multiple issues with the implementation of OpenFile (

func (emu *WinEmulator) OpenFile(path string, access int32) (*Handle, error) {
) that is used:

  1. There exists a trivial directory traversal vulnerability, despite a previous commit attempting to fix it:
#include <Windows.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	HANDLE h = CreateFileA("../../../../../../../../../test", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (h == INVALID_HANDLE_VALUE)
		OutputDebugStringA("invalid handle");
	char buf[128];
	int nr;
	int err = ReadFile(h, buf, 128, &nr, NULL);
	if (err == FALSE)
		OutputDebugStringA("readfile err");
	OutputDebugStringA(buf);
}

Create the file /test, put something in it, and binee will fetch that content and display it in the emulation output. You may need to do some shenanigans with a manual entrypoint to get this to run under binee, due to #19. This can also be demonstrated with WriteFile.

  1. Binee will by default open every file for reading and writing, regardless of what permissions were requested. This has a variety of implications, since the emulated program will not be able to read any files that are read only. Ironically this neuters the above vulnerability a bit, since you can only read from world-writeable/user-writeable files.

  2. In go, strings.Replace does not modify the string in place, it returns a copy with the replacements made. Therefore the replacements with have no effect (except on line 60), since the unmodified path variable is reused.

  3. Line 56 is buggy. This path will also be taken if the file opened merely contains the filename, for example if malware.exe tries to open malware.exe.res.

not really sure if its an issue

No dlls are missing and it seems that its stuck at the third API call, its the same for all the test binaries

binee@36db47c11662:/go/src/binee# ./binee tests/ConsoleApplication1_x86.exe
[1] 0x21982e60: F GetSystemTimeAsFileTime(lpSystemTimeAsFileTime = 0xb7feffe0) = 0xb7feffe0
[1] 0x2197ea60: P GetCurrentThreadId() = 0x0
[1] 0x21990c00: P GetCurrentProcessId() = 0x2001
STUCK*
binee@36db47c11662:
/go/src/binee#

Various issues running malware samples

I have installed binee on my FreeBSD box and as far as I can tell it's running fine I get all the same result from the test files as the demo, but as soon as I start running malware samples most of the time the process halts somewhere down the road.

binee  33/ba/33ba8cd251512f90b7249930aee22d3f47255420a8d41e1326169e0f948cc7d0 
[1] 0x289d78c0: F SetErrorMode(uMode = 0x8001) = 0x0
[1] 0x289da410: F GetVersion() = 0x40000
[1] 0x289d91c0: F GetModuleHandleA(lpModuleName = 'KERNEL32') = 0x0
[1] 0x289d96e0: F GetSystemDirectoryA(lpBuffer = 0xb7fefd34, uSize = 0x104) = 0x13
[1] 0x26c40df0: P wsprintfA(lpstr = 0xb7fefd47, lpcstr = '%s%s.dll') = 0xb7fefd47
[1] 0x26c40e10: P wvsprintfA(lpstr = 0xb7fefd47, lpcstr = '%s%s.dll', arglist = 0xb7fefd2c) = 0xb7fefd2c
[1] 0x289d97a0: F LoadLibraryExA(lpFileName = 'c:\windows\system32\KERNEL32.dll', hFile = 0x0, dwFlags = 0x8) = 0x289b1000
[1] 0x289d6060: F GetProcAddress(hModule = 0x289b1000, lpProcName = 'SetDefaultDllDirectories') = 0x28a343ff
[1] 0x28a343ff:  **SetDefaultDllDirectories**() = 0x28a343ff
interupt 5
interupt 5
interupt 5
interupt 5

This one just keeps throwing interupt5

binee  da/23/da232fa1e63e6f2efb1d9550dad8984798a7d22cbf12150778c45c35f2fa0105
[1] 0x213b7330: P _CorExeMain() = 0xb0010000
[1] 0x21590020: F GetEnvironmentVariableW(lpName = 'COMPlus_Version', lpBuffer = 0x0, nSize = 0x0) = 0x0
[1] 0x21590020: F GetEnvironmentVariableW(lpName = 'COMPlus_InstallRoot', lpBuffer = 0x0, nSize = 0x0) = 0x0
[1] 0x2158ce40: P GetLastError() = 0xb7fefd8c
[1] 0x201039b0: P GetLastError() = 0xb7fefd8c
[1] 0x2158ce40: P GetLastError() = 0xcb
[1] 0x201039b0: P GetLastError() = 0xcb
[1] 0x2158ce40: P GetLastError() = 0xb7fefd8c
[1] 0x201039b0: P GetLastError() = 0xb7fefd8c
[1] 0x2158ce40: P GetLastError() = 0xcb
[1] 0x201039b0: P GetLastError() = 0xcb
[1] 0x215e56e0: F AcquireSRWLockExclusive(SRWLock = 0x213eca34) = 0x213ef004
[1] 0x21590590: F VirtualQuery(lpAddress = 0x213ef000, lpBuffer = 0xb7fefc60, dwLength = 0x1c) = 0x1
[1] 0x2158f160: F VirtualProtect(lpAddress = 0x213ef000, dwSize = 0x74, flNewProtect = 0x4, lpflOldProtect = 0x213edba8) = 0x1
[1] 0x215ecadb: F ReleaseSRWLockExclusive(SRWLock = 0x213eca34) = 0x1
[1] 0x215927a0: F LoadLibraryExA(lpFileName = 'ADVAPI32.dll', hFile = 0x0, dwFlags = 0x0) = 0x21835000
[1] 0x2158f060: F GetProcAddress(hModule = 0x21835000, lpProcName = 'RegOpenKeyExW') = 0x21852ea0
[1] 0x215e56e0: F AcquireSRWLockExclusive(SRWLock = 0x213eca34) = 0x213ef004
[1] 0x2158f160: F VirtualProtect(lpAddress = 0x213ef000, dwSize = 0x74, flNewProtect = 0x0, lpflOldProtect = 0xb7fefca4) = 0x1
[1] 0x215ecadb: F ReleaseSRWLockExclusive(SRWLock = 0x213eca34) = 0x1
[1] 0x21852ea0: F RegOpenKeyExW(hKey = 'HKEY_LOCAL_MACHINE', lpSubKey = 'Software\Microsoft\.NETFramework\Policy\', ulOptions = 0x0, samDesired = 0x20019, phkResult = 0xb7fefd68) = 0x1
[1] 0x21590020: F GetEnvironmentVariableW(lpName = 'COMPlus_DefaultVersion', lpBuffer = 0x0, nSize = 0x0) = 0x0
[1] 0x21590e30: F GetModuleFileNameW(hModule = 0x0, lpFilename = 0xb7fef93c, nSize = 0x104) = 0x52
[1] 0x21596810: F GetFileAttributesW(lpFileName = 'C:\Users\tbrady\da232fa1e63e6f2efb1d9550dad8984798a7d22cbf12150778c45c35f2fa0105.local') = 0x80
[1] 0x21590e30: F GetModuleFileNameW(hModule = 0x0, lpFilename = 0xb7fef288, nSize = 0x104) = 0x52
[1] 0x215968a0: F GetFullPathNameW(lpFileName = 'C:\Users\tbrady\da232fa1e63e6f2efb1d9550dad8984798a7d22cbf12150778c45c35f2fa0105', nBufferLength = 0x104, lpBuffer = 0xb7fef490, lpFilePart = 0xb7fef284) = 0x80
[1] 0x2158ce40: P GetLastError() = 0xb7fef24c
[1] 0x201039b0: P GetLastError() = 0xb7fef24c
[1] 0x2158d050: F GetProcessHeap() = 0x123456
[1] 0x215ea7fa: F HeapAlloc(hHeap = 0x123456, dwFlags = 0x0, dwBytes = 0x48010b72) = 0xa0000730
[1] 0x2158ce40: P GetLastError() = 0xa0000730
[1] 0x201039b0: P GetLastError() = 0xa0000730
[1] 0x21590020: F GetEnvironmentVariableW(lpName = 'COMPlus_CLRLoadLogDir', lpBuffer = 0x0, nSize = 0x0) = 0x0
[1] 0x21852ea0: F RegOpenKeyExW(hKey = 'HKEY_LOCAL_MACHINE', lpSubKey = 'Software\Microsoft\.NETFramework', ulOptions = 0x0, samDesired = 0x20019, phkResult = 0xb7feec38) = 0x1
[1] 0x2158ce40: P GetLastError() = 0xb7fef000
[1] 0x201039b0: P GetLastError() = 0xb7fef000
[1] 0x215ea7fa: F HeapAlloc(hHeap = 0x123456, dwFlags = 0x0, dwBytes = 0x2) = 0xe80112b2
[1] 0x2158ce40: P GetLastError() = 0xe80112b2
[1] 0x201039b0: P GetLastError() = 0xe80112b2
Invalid Write: address = 0xe80112b2, size = 0x2, value = 0x0

This one stops after an Invalid Write

my mock folder is as follows

ls -b os/win10_32/windows/system32
advapi32.dll            cryptsp.dll             mscoree.dll             powrprof.dll            shlwapi.dll             version.dll
apisetschema.dll        gdi32.dll               msvbvm60.dll            profapi.dll             ucrtbase_clr0400.dll    win32u.dll
bcryptprimitives.dll    gdi32full.dll           msvcp_win.dll           psapi.dll               ucrtbase.dll            windows.storage.dll
cfgmgr32.dll            iphlpapi.dll            msvcrt.dll              rpcrt4.dll              umpdc.dll               wininet.dll
combase.dll             kernel.appcore.dll      mswsock.dll             sechost.dll             user32.dll              winmm.dll
comctl32.dll            kernel32.dll            ntdll.dll               secur32.dll             userenv.dll             winmmbase.dll
comdlg32.dll            kernelbase.dll          ole32.dll               shcore.dll              uxtheme.dll             ws2_32.dll
crypt32.dll             mpr.dll                 oleaut32.dll            shell32.dll             vcruntime140.dll

Add C++ Redistributable to Documentation/Wiki

The test files included in binee are built using C++ Redistributable DLLs. To have them run correctly without having to grab DLL piecemeal as they generate errors in binee, the user should install the redistributable package on the system32 machine used to supply DLLs before copying into the mock windows filesystem.

panic: runtime error: invalid memory address or nil pointer dereference

Panic on test binary:

# ./binee tests/ConsoleApplication1_x86.exe 
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x14 pc=0x54c0e2]

goroutine 1 [running]:
github.com/carbonblack/binee/windows.(*WinEmulator).initPe(0xc00014a480, 0xc00015e000, 0x7fffff46e763, 0x21, 0x4, 0x4, 0xc000120030, 0x0, 0x0, 0x0, ...)
	/root/binee-master/windows/loader.go:872 +0xdf2
github.com/carbonblack/binee/windows.LoadMem(0xc00015e000, 0x7fffff46e763, 0x21, 0xc000120030, 0x0, 0x0, 0xc000141ed0, 0x7fc2875e6d01, 0xc000128598, 0xc000141c50)
	/root/binee-master/windows/winemulator.go:340 +0x2249
github.com/carbonblack/binee/windows.Load(0x7fffff46e763, 0x21, 0xc000120030, 0x0, 0x0, 0xc000141ed0, 0xc000128598, 0xc0001123c0, 0xc000141ce8)
	/root/binee-master/windows/winemulator.go:169 +0xfd
main.main()
	/root/binee-master/main.go:133 +0xde0

Ubuntu environment:

# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 19.10
Release:	19.10
Codename:	eoan

Unicorn engine 1.0.2-rc3 compiled like so:

apt install build-essential
wget https://github.com/unicorn-engine/unicorn/archive/1.0.2-rc3.tar.gz
tar -zxvf 1.0.2-rc3.tar.gz 
cd unicorn-1.0.2-rc3/
UNICORN_ARCHS="aarch64"
./make.sh
./make.sh install
echo "/usr/lib64" > /etc/ld.so.conf.d/unicorn.conf
ldconfig
./samples/sample_all.sh

binee installed like so:

apt install unzip
snap install --classic go
wget https://github.com/carbonblack/binee/archive/master.zip
unzip master.zip 
cd binee-master/
go build
mkdir os
cd os
mkdir win10_32
cd win10_32/
mkdir windows
cd windows/
mv ~/binee-master/system32 .
cd
cd binee-master/
./binee tests/ConsoleApplication1_x86.exe

Bug in the windows loader when loading Aspack packed binaries

Hello ,
I was testing binee with multiple packers and noticed that it fails to load samples packed with ASPack with the following error

[signal SIGSEGV: segmentation violation code=0x1 addr=0x50 pc=0x553c3a] goroutine 1 [running]: github.com/carbonblack/binee/pefile.(*PeFile).ImageBase(...) /bineedev/go/src/github.com/carbonblack/binee/pefile/pefile.go:197 github.com/carbonblack/binee/windows.(*WinEmulator).initPe(0xc0000da900, 0x0, 0x7ffcc52dceda, 0x39, 0x4, 0x4, 0xc00008a640, 0x1, 0x1, 0x400, ...) /bineedev/go/src/github.com/carbonblack/binee/windows/loader.go:731 +0x3a github.com/carbonblack/binee/windows.New(0x7ffcc52dceda, 0x39, 0x4, 0x4, 0xc00008a640, 0x1, 0x1, 0x1, 0x0, 0x0, ...) /bineedev/go/src/github.com/carbonblack/binee/windows/winemulator.go:284 +0x2133 main.main() /bineedev/go/src/github.com/carbonblack/binee/main.go:176 +0x604 main.main()

I discussed the issue with Kyle on slack and he agreed that there is a bug in the pe parser
Here is the binary that reproduces the error : https://www.virustotal.com/gui/file/8d3c9d450922299dd79fc509c7aa789b12df5c15f309fc1efa2a59cbf020cd0b/detection

repeating runtime error

Solved:
My mistake was trying to execute all sorts of PE32+/non-PE.. (edited)

I've been getting that error below with many binaries.
Any advice on how to debug the emulator flow inside the docker?
ยฏ_(ใƒ„)_/ยฏ

"panic: runtime error: invalid memory address or nil pointer dereference
signal SIGSEGV: segmentation violation code=0x1 addr=0x50 pc=0x553caa]
goroutine 1 [running]:\ngithub.com/carbonblack/binee/pefile.(*PeFile).ImageBase(...)\n\t/bineedev/go/src/github.com/carbonblack/binee/pefile/pefile.go:197\ngithub.com/carbonblack/binee/windows.(*WinEmulator).initPe(0xc0000c6900, 0x0, 0x7ffc82cd7f0d, 0x4a, 0x4, 0x4, 0xc000078640, 0x1, 0x1, 0x400,...)\n\t/bineedev/go/src/github.com/carbonblack/binee/windows/loader.go:731 +0x3a\ngithub.com/carbonblack/binee/windows.New(0x7ffc82cd7f0d, 0x4a, 0x4, 0x4, 0xc000078640, 0x1, 0x1, 0x0, 0x0, 0x0, ...)\n\t/bineedev/go/src/github.com/carbonblack/binee/windows/winemulator.go:284 +0x2133\nmain.main()\n\t/bineedev/go/src/binee/main.go:176 +0x604\n"

ntdll,user32: Add support for ntdll.KiFastSystemCall sysenter wrapper, as needed by NtUserCallOneParam and NtUserCallTwoParam of user32.dll

To enable analysis of samples using user32.dll, support for KiFastSystemCall of ntdll is needed in binee.

Roughly, this is what happens when a program invokes a function of user32.dll, say ShowCursor(FALSE).

  1. The sample binary pushes 1 argument to the stack and invokes ShowCursor of user32.dll.
  2. The ShowCursor function of user32.dll pushes a simple call routine ID (e.g. the ID of ShowCursor is 0x40 on XP) and the argument of ShowCursor and then invokes NtUserCallOneParam.
  3. The NtUserCallOneParam function assigns arguments to the corresponding registers and invokes KiFastSystemCall of ntdll, through an indirect call to 0x7FFE0300 (i.e. mov edx, 7FFE0300h; call dword ptr [edx])
  4. The KiFastSystemCall function of ntdll assigns arguments to the corresponding registers and performs a call to sysenter.
  5. Now, the system call performs the simple routine of user32.dll as indicated by the given ID.

Using binee to analyze a simple program using ShowCursor currently results an premature abort of the analysis, as binee cannot resolve the indirect call to 0x7ffe0300 (which should resolve to KiFastSystemCall of ntdll).

A minimal test case is provided below.

$ ~/Desktop/binee/binee -v -d -c win.yaml c.exe
[1] 0x00401000: push 0
[1] 0x00401002: call 0x12
[1] 0x00401014: jmp dword ptr [0x402008]
[1] 0x20566a6e:  **user32.dll:ShowCursor**() = 0xb0010000
[1] 0x20566a6e: mov edi, edi
[1] 0x20566a70: push ebp
[1] 0x20566a71: mov ebp, esp
[1] 0x20566a73: push 0x40
[1] 0x20566a75: push dword ptr [ebp + 8]
[1] 0x20566a78: call 0xfffe8a36
[1] 0x2054f4ae: mov eax, 0x1143
[1] 0x2054f4b3: mov edx, 0x7ffe0300
[1] 0x2054f4b8: call dword ptr [edx]
# Note: analysis is prematurely aborted here. It should continue to analyze, in this case the call to ExitProcess

Contents of c.asm:

extern _ShowCursor@4
extern _ExitProcess@4

global _WinMain@12

[section .text]

_WinMain@12:
	push 0
	call _ShowCursor@4
	push 123
	call _ExitProcess@4

Build instructions:

# assemble c.asm into 32-bit PE object file.
$ nasm -f win32 -o c.obj c.asm

# link object file with kernel32.lib to create executable
$ wine ~/VS6/VC98/Bin/LINK.EXE /OUT:c.exe /ENTRY:WinMain@12 /subsystem:windows /machine:i386 /LIBPATH:${HOME}/VS6/VC98/LIB /nologo c.obj kernel32.lib user32.lib

# run binary to check result of GetLastError
$ wine c.exe ; echo $?
123

c.exe attachment: c.tar.gz


User code:

   push 0
   call _ShowCursor@4

ShowCursor of user32.dll as presented in IDA:

.text:7E42FA6E ; int __stdcall ShowCursor(BOOL bShow)
.text:7E42FA6E                 public _ShowCursor@4
.text:7E42FA6E _ShowCursor@4   proc near               ; DATA XREF: .text:off_7E413928โ†‘o
.text:7E42FA6E
.text:7E42FA6E bShow           = dword ptr  8
.text:7E42FA6E
.text:7E42FA6E                 mov     edi, edi
.text:7E42FA70                 push    ebp
.text:7E42FA71                 mov     ebp, esp
.text:7E42FA73                 push    40h ; '@'
.text:7E42FA75                 push    [ebp+bShow]
.text:7E42FA78                 call    _NtUserCallOneParam@8 ; NtUserCallOneParam(x,x)
.text:7E42FA7D                 pop     ebp
.text:7E42FA7E                 retn    4
.text:7E42FA7E _ShowCursor@4   endp

Code of NtUserCallOneParam as presented in IDA:

.text:7E4184AE ; __stdcall NtUserCallOneParam(x, x)
.text:7E4184AE _NtUserCallOneParam@8 proc near         ; CODE XREF: ReleaseDC(x,x)+1Cโ†“p
.text:7E4184AE                                         ; RealMsgWaitForMultipleObjectsEx(x,x,x,x,x)+72โ†“p ...
.text:7E4184AE                 mov     eax, 1143h
.text:7E4184B3                 mov     edx, 7FFE0300h
.text:7E4184B8                 call    dword ptr [edx]
.text:7E4184BA                 retn    8
.text:7E4184BA _NtUserCallOneParam@8 endp

Code of KiFastSystemCall as presented in IDA:

.text:7C90E4F0 ; Exported entry  41. KiFastSystemCall
.text:7C90E4F0
.text:7C90E4F0 ; =============== S U B R O U T I N E =======================================
.text:7C90E4F0
.text:7C90E4F0
.text:7C90E4F0 ; _DWORD __stdcall KiFastSystemCall()
.text:7C90E4F0                 public _KiFastSystemCall@0
.text:7C90E4F0 _KiFastSystemCall@0 proc near           ; DATA XREF: .text:off_7C903428โ†‘o
.text:7C90E4F0                 mov     edx, esp
.text:7C90E4F2                 sysenter
.text:7C90E4F2 _KiFastSystemCall@0 endp
.text:7C90E4F2
.text:7C90E4F4 ; Exported entry  42. KiFastSystemCallRet
.text:7C90E4F4
.text:7C90E4F4 ; =============== S U B R O U T I N E =======================================
.text:7C90E4F4
.text:7C90E4F4
.text:7C90E4F4 ; _DWORD __stdcall KiFastSystemCallRet()
.text:7C90E4F4                 public _KiFastSystemCallRet@0
.text:7C90E4F4 _KiFastSystemCallRet@0 proc near        ; DATA XREF: .text:off_7C903428โ†‘o
.text:7C90E4F4                 retn
.text:7C90E4F4 _KiFastSystemCallRet@0 endp

References:

Edit: a related by orthogonal issue to this would be that an error should be reported by binee to indicate premature abort of analysis, so the analyzee can make an informed decision as to how to proceed (and not be under the false pretense that analysis completed successfully).

debug output of first instruction of function missing when using `-v`

When running binee -v binary.exe the first instruction of CreateFileMappingA (of kernel32.dll) and RtlInitAnsiString (of ntdll.dll) are missing from the debug output.

[1] 0x00408e92: call dword ptr [0x479188]
[1] 0x211084ee:  **CreateFileMappingA**() = 0xb7fefbb8
[1] 0x211084f0: push ebp
[1] 0x211084f1: mov ebp, esp
[1] 0x211084f3: push ecx
[1] 0x211084f4: push ecx
[1] 0x211084f5: push esi
[1] 0x211084f6: xor esi, esi
[1] 0x211084f8: cmp dword ptr [ebp + 0x1c], esi
[1] 0x211084fb: je 0x33
[1] 0x211084fd: mov eax, dword ptr fs:[0x18]
[1] 0x21108503: push dword ptr [ebp + 0x1c]
[1] 0x21108506: lea esi, [eax + 0xbf8]
[1] 0x2110850c: lea eax, [ebp - 8]
[1] 0x2110850f: push eax
[1] 0x21108510: call dword ptr [0x2110008c]
[1] 0x20eab25d:  **RtlInitAnsiString**() = 0xb7fefb84
[1] 0x20eab25e: mov edi, dword ptr [esp + 0xc]

In particular, the first assembly instruction of CreateFileMappingA is missing from the debug output:

.text:7C8094EE                 mov     edi, edi

where binee displays:

[1] 0x211084ee:  **CreateFileMappingA**() = 0xb7fefbb8

As is the first assembly instruction of RtlInitAnsiString:

.text:7C90125D                 push    edi

where binee displays:

[1] 0x20eab25d:  **RtlInitAnsiString**() = 0xb7fefb84

From CreateFileMappingA of kernel32.dll (as presented by IDA):

.text:7C8094EE ; HANDLE __stdcall CreateFileMappingA(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName)
.text:7C8094EE                 public _CreateFileMappingA@24
.text:7C8094EE _CreateFileMappingA@24 proc near        ; DATA XREF: .text:off_7C802654โ†‘o
.text:7C8094EE
.text:7C8094EE DestinationString= _STRING ptr -8
.text:7C8094EE hFile           = dword ptr  8
.text:7C8094EE lpFileMappingAttributes= dword ptr  0Ch
.text:7C8094EE flProtect       = dword ptr  10h
.text:7C8094EE dwMaximumSizeHigh= dword ptr  14h
.text:7C8094EE dwMaximumSizeLow= dword ptr  18h
.text:7C8094EE lpName          = dword ptr  1Ch
.text:7C8094EE
.text:7C8094EE ; FUNCTION CHUNK AT .text:7C83CEE0 SIZE 00000020 BYTES
.text:7C8094EE
.text:7C8094EE                 mov     edi, edi
.text:7C8094F0                 push    ebp
.text:7C8094F1                 mov     ebp, esp
.text:7C8094F3                 push    ecx
.text:7C8094F4                 push    ecx
.text:7C8094F5                 push    esi
.text:7C8094F6                 xor     esi, esi
.text:7C8094F8                 cmp     [ebp+lpName], esi
.text:7C8094FB                 jz      short loc_7C80952E
.text:7C8094FD                 mov     eax, large fs:18h
.text:7C809503                 push    [ebp+lpName]    ; SourceString
.text:7C809506                 lea     esi, [eax+0BF8h]
.text:7C80950C                 lea     eax, [ebp+DestinationString]
.text:7C80950F                 push    eax             ; DestinationString
.text:7C809510                 call    ds:__imp__RtlInitAnsiString@8 ; RtlInitAnsiString(x,x)

From RtlInitAnsiString of ntdll.dll (as presented by IDA):

.text:7C90125D _RtlInitAnsiString@8 proc near          ; CODE XREF: RtlCreateUnicodeStringFromAsciiz(x,x)+Eโ†“p
.text:7C90125D                                         ; LdrpUpdateLoadCount3(x,x,x)+14Fโ†“p ...
.text:7C90125D
.text:7C90125D DestinationString= dword ptr  4
.text:7C90125D SourceString    = dword ptr  8
.text:7C90125D
.text:7C90125D                 push    edi
.text:7C90125E                 mov     edi, [esp+4+SourceString]
.text:7C901262                 mov     edx, [esp+4+DestinationString]

Case sensative DLLs on Linux

Built in an Ubuntu docker container.
Copy System32 DLL files from a win10 x86 installation.

linux@2edd1925c12c:/bineedev/go/src/binee$ ./binee tests/ConsoleApplication1_x86.exe 
error finding file api-ms-win-core-job-l1-1-0.dll
error finding file api-ms-win-core-file-l2-1-2.dll
error finding file api-ms-win-core-debug-l1-1-1.dll
error finding file api-ms-win-security-appcontainer-l1-1-0.dll
error finding file api-ms-win-core-appcompat-l1-1-1.dll
error finding file api-ms-win-core-datetime-l1-1-1.dll
error finding file api-ms-win-core-realtime-l1-1-0.dll
error finding file api-ms-win-core-wow64-l1-1-0.dll
error finding file kernelbase.dll
error finding file api-ms-win-core-processthreads-l1-1-3.dll

cp KernelBase.dll kernelbase.dll

linux@2edd1925c12c:/bineedev/go/src/binee$ ./binee tests/ConsoleApplication1_x86.exe 
error finding file vcruntime140.dll
[1] 0x214bfad0: F GetSystemTimeAsFileTime(lpSystemTimeAsFileTime = 0xb7feffe0) = 0xb7feffe0
[1] 0x214ccb10: P GetCurrentThreadId() = 0x0
[1] 0x214ccb60: P GetCurrentProcessId() = 0x2001
[1] 0x214ccae0: F QueryPerformanceCounter(lpPerformanceCount = 0xb7feffd8) = 0x1
[1] 0x214d49a0: F IsProcessorFeaturePresent(ProcessorFeature = 0xa) = 0x1
[1] 0x20874220: F _initterm_e(PVFV = 0x4020d8, PVFV = 0x4020e4) = 0x0
[1] 0x20874160: F _initterm(PVPV = 0x4020cc, PVPV = 0x4020d4) = 0x0

Import paths incorrect

package binee/pefile: unrecognized import path "binee/pefile" (import path does not begin with hostname)
package binee/util: unrecognized import path "binee/util" (import path does not begin with hostname)
package binee/windows: unrecognized import path "binee/windows" (import path does not begin with hostname)

Report error to user if analysis is aborted prematurely

As seen in #45, an analysis may be aborted before reaching the proper end of execution if binee runs into a scenario where it cannot continue analysis; such as an indirect call to an address for which no code is mapped or hooked.

To help users of binee assess the situation an error should be reported to the user, indicating that the analysis was aborted prior to completion.

Unable to get Binee to run properly

I'm running Binee in a Docker container (host is macOS), and I followed all of the instructions in the README. Unfortunately, when running on the test application, I'm unable to get it to work properly:

root@b252547852f4:~/go/src/binee# ./binee tests/ConsoleApplication1_x86.exe
[1] 0x2004da36: F GetSystemTimeAsFileTime(lpSystemTimeAsFileTime = 0xb7feffe0) = 0xb7feffe0
[1] 0x2004c630: P GetCurrentThreadId() = 0x0
root@b252547852f4:~/go/src/binee#

With -v, I get this:

[1] 0x0040142d: call 0x3f4
[1] 0x00401821: mov ecx, dword ptr [0x403000]
[1] 0x00401827: push esi
[1] 0x00401828: push edi
[1] 0x00401829: mov edi, 0xbb40e64e
[1] 0x0040182e: mov esi, 0xffff0000
[1] 0x00401833: cmp ecx, edi
[1] 0x00401835: je 6
[1] 0x0040183b: call 0xffffff97
[1] 0x004017d2: push ebp
[1] 0x004017d3: mov ebp, esp
[1] 0x004017d5: sub esp, 0x14
[1] 0x004017d8: and dword ptr [ebp - 0xc], 0
[1] 0x004017dc: lea eax, [ebp - 0xc]
[1] 0x004017df: and dword ptr [ebp - 8], 0
[1] 0x004017e3: push eax
[1] 0x004017e4: call dword ptr [0x402014]
[1] 0x213d3a36: F GetSystemTimeAsFileTime(lpSystemTimeAsFileTime = 0xb7feffe0) = 0xb7feffe0
[1] 0x004017ea: mov eax, dword ptr [ebp - 8]
[1] 0x004017ed: xor eax, dword ptr [ebp - 0xc]
[1] 0x004017f0: mov dword ptr [ebp - 4], eax
[1] 0x004017f3: call dword ptr [0x402018]
[1] 0x213d2630: P GetCurrentThreadId() = 0x0
[1] 0x213d2637: jmp dword ptr [0x21387868]
[1] 0x000c474a: add byte ptr [eax], al
[1] 0x000c474c: add byte ptr [eax], al
[1] 0x000c474e: add byte ptr [eax], al
[1] 0x000c4750: add byte ptr [eax], al
[1] 0x000c4752: add byte ptr [eax], al
[1] 0x000c4754: add byte ptr [eax], al
[1] 0x000c4756: add byte ptr [eax], al
[1] 0x000c4758: add byte ptr [eax], al
[1] 0x000c475a: add byte ptr [eax], al
[1] 0x000c475c: add byte ptr [eax], al
[1] 0x000c475e: add byte ptr [eax], al
[1] 0x000c4760: add byte ptr [eax], al
[1] 0x000c4762: add byte ptr [eax], al
[1] 0x000c4764: add byte ptr [eax], al
[1] 0x000c4766: add byte ptr [eax], al
[1] 0x000c4768: add byte ptr [eax], al
[1] 0x000c476a: add byte ptr [eax], al
[1] 0x000c476c: add byte ptr [eax], al
[1] 0x000c476e: add byte ptr [eax], al

add byte ptr [eax], al is the mnemonic for null byte opcodes I believe, so my guess is there's some null data issue happening somewhere.

This is with the latest commit to the master branch. Please let me know if there's any other information I can provide for this.

non-deterministic enumeration of imported libraries

Upon two consecutive executions of binee (with added debug statements for SearchFile, the following debug output was obtained. Notice that rpcrt4.dll follows shell32.dll in the output of the first execution, while msvcrt.dll follows shell32.dll in the outut of the second execution; thus indicating non-deterministic results.

emu.SearchPath
SearchFile("apisetschema.dll")
SearchFile("ntdll.dll")
SearchFile("kernel32.dll")
SearchFile("shell32.dll")
SearchFile("rpcrt4.dll")
SearchFile("advapi32.dll")
SearchFile("secur32.dll")
SearchFile("shlwapi.dll")
SearchFile("gdi32.dll")
SearchFile("user32.dll")
SearchFile("msvcrt.dll")
SearchFile("version.dll")
emu.SearchPath
SearchFile("apisetschema.dll")
SearchFile("ntdll.dll")
SearchFile("kernel32.dll")
SearchFile("shell32.dll")
SearchFile("msvcrt.dll")
SearchFile("rpcrt4.dll")
SearchFile("secur32.dll")
SearchFile("advapi32.dll")
SearchFile("shlwapi.dll")
SearchFile("gdi32.dll")
SearchFile("user32.dll")
SearchFile("version.dll")

crashes with panic when running `binee doesnotexist.exe`

Running binee with the input argument doesnotexist.exe (i..e a file path that does not exist) results in a nil-deref crash, rather than say an error saying unable to locate file "doesnotexist.exe".

$ binee doesnotexist.exe
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x50 pc=0x55dcba]

goroutine 1 [running]:
github.com/carbonblack/binee/pefile.(*PeFile).ImageBase(...)
	/home/u/Desktop/binee/pefile/pefile.go:221
github.com/carbonblack/binee/windows.(*WinEmulator).initPe(0xc000114900, 0x0, 0x7ffe5115f9b0, 0x10, 0x4, 0x4, 0xc000044640, 0x1, 0x1, 0x5e4d00, ...)
	/home/u/Desktop/binee/windows/loader.go:744 +0x3a
github.com/carbonblack/binee/windows.New(0x7ffe5115f9b0, 0x10, 0x4, 0x4, 0xc000044640, 0x1, 0x1, 0x0, 0x0, 0x0, ...)
	/home/u/Desktop/binee/windows/winemulator.go:284 +0x22b7
main.main()
	/home/u/Desktop/binee/main.go:192 +0xa7b

Incorrect return value of _p_fmode and _p_commode

Using binee to test the malware with md5 dcb14f117a32b786ff1506dc80f23370, the execution crashed with the following error:

[1] 0x212fc5d0: F kernel32.dll:GetSystemTimeAsFileTime(lpSystemTimeAsFileTime = 0xb7feffec) = 0xb7feffec
[1] 0x21303350: P kernel32.dll:GetCurrentProcessId() = 0x0
[1] 0x201233e0: P kernelbase.dll:GetCurrentProcessId() = 0x0
[1] 0x212f5c80: P kernel32.dll:GetCurrentThreadId() = 0x1001
[1] 0x21302950: F kernel32.dll:GetTickCount() = 0x5e68b40c
[1] 0x212fad70: F kernel32.dll:QueryPerformanceCounter(lpPerformanceCount = 0xb7feffe4) = 0x1
[1] 0x212fe750: F kernel32.dll:GetStartupInfoA(lpStartupInfo = 0xb7feff90) = 0xb7feff90
[1] 0x212ff1c0: F kernel32.dll:GetModuleHandleA(lpModuleName = '') = 0x400000
[1] 0x2370f600: P msvcrt.dll:__set_app_type(appType = 0x2) = 0x2
[1] 0x200eadd0: F kernelbase.dll:GetModuleHandleW(lpModuleName = '') = 0x400000
[1] 0x236eddb0: F msvcrt.dll:__p__fmode(mode = 0x406bfa) = 0x4000
Invalid Write unmapped: address = 0x4000, size = 0x4, value = 0x0

This happens because the function _p_fmode (and _p_commode) returns a static value 0x4000 and, since this address is unmapped, the execution halts.
I'm too new to emulation and malware analysis in general to give a concrete solution to this problem, but I think it is enough to always return an address that is mapped in memory.

incorrect execution of GetLastError, wrong set of assembly instructions executed

I was running binee last night, and on one of my samples the invocation of GetLastError would result in incorrect execution (eventually resulting in an invalid read).

I used IDA to verify the implementation of GetLastError, and for some reason, binee is executing another set of assembly instructions, rather than the actual assembly instructions of the GetLastError function (as present in kernel32.dll).

To help troubleshoot, I've created a minimal test case (b.exe). Find source code, build instructions and binary attached below.

extern _SetLastError@4
extern _GetLastError@0
extern _ExitProcess@4

global _main

[section .text]

_main:
	push 42
	call _SetLastError@4
	call _GetLastError@0
	push eax
	call _ExitProcess@4
# assemble b.asm into 32-bit PE object file.
$ nasm -f win32 -o b.obj b.asm

# link object file with kernel32.lib to create executable
$ wine ~/VS6/VC98/Bin/LINK.EXE /OUT:b.exe /ENTRY:main /subsystem:console /machine:i386 /LIBPATH:${HOME}/VS6/VC98/LIB /nologo b.obj kernel32.lib

# run binary to check result of GetLastError
$ wine b.exe ; echo $?
42

Results of running binee on b.exe:

$ ~/Desktop/binee/binee -v -d -c win.yaml b.exe
[1] 0x00401000: push 0x2a
[1] 0x00401002: call 0x10
[1] 0x00401012: jmp dword ptr [0x402008]
[1] 0x2025e2d3: F kernel32.dll:SetLastError(dwErrCode = 0x2a) = 0xb0010000
[1] 0x00401007: call 0x11
[1] 0x00401018: jmp dword ptr [0x402000]
[1] 0x2025e0bf: P kernel32.dll:GetLastError() = 0xb0010000
[1] 0x2025e0bf: dec esi
[1] 0x2025e0c0: push esp
[1] 0x2025e0c1: inc esp
[1] 0x2025e0c2: dec esp
[1] 0x2025e0c3: dec esp
[1] 0x2025e0c4: push edx
[1] 0x2025e0c6: je 0x6e
[1] 0x2025e0c8: inc edi
[1] 0x2025e0c9: je 0x4f
[1] 0x2025e0cc: popal 
[1] 0x2025e0cd: jae 0x76
[1] 0x2025e143: je 0x4a
[1] 0x2025e145: popal 
[1] 0x2025e147: add byte ptr fs:[esi + 0x54], cl
[1] 0x2025e14b: inc esp
[1] 0x2025e14c: dec esp
[1] 0x2025e14d: dec esp
[1] 0x2025e14e: push edx
[1] 0x2025e150: je 0x6e
[1] 0x2025e152: dec ecx
[1] 0x2025e153: outsb dx, byte ptr [esi]
[1] 0x2025e154: je 0x67
[1] 0x2025e156: jb 0x6e
[1] 0x2025e158: outsd dx, dword ptr [esi]
[1] 0x2025e159: arpl word ptr [ebx + 0x65], bp
[1] 0x2025e15c: inc esi
[1] 0x2025e15e: insb byte ptr es:[edi], dx
[1] 0x2025e15f: jne 0x75
[1] 0x2025e1d4: push ecx
[1] 0x2025e1d5: jne 0x67
[1] 0x2025e23c: outsd dx, dword ptr [esi]
[1] 0x2025e23d: outsb dx, byte ptr [esi]
[1] 0x2025e23e: je 0x67
[1] 0x2025e240: js 0x76
[1] 0x2025e242: add byte ptr [esi + 0x54], cl
[1] 0x2025e245: inc esp
[1] 0x2025e246: dec esp
[1] 0x2025e247: dec esp
[1] 0x2025e248: push edx
[1] 0x2025e24a: je 0x6e
[1] 0x2025e24c: inc ebx
[1] 0x2025e24d: popal 
[1] 0x2025e24e: jo 0x76
[1] 0x2025e250: jne 0x74
[1] 0x2025e2c4: arpl word ptr [ecx + ebp*2 + 0x6f], si
[1] 0x2025e2c8: outsb dx, byte ptr [esi]
Invalid Read: address = 0xffffff00, size = 0x1, value = 0x0

Contents of win.yaml:

$ cat win.yaml
root: "/home/u/_share_/xp/

b.exe attachment: b.tar.gz

Reference disassembly of GetLastError from IDA:

.text:7C830759 ; DWORD __stdcall GetLastError()
.text:7C830759 _GetLastError@0 proc near               ; CODE XREF: GetComputerNameExW(x,x,x):loc_7C820174โ†‘p
.text:7C830759                                         ; GetComputerNameExW(x,x,x):loc_7C82018Bโ†‘p ...
.text:7C830759                 mov     eax, large fs:18h
.text:7C83075F                 mov     eax, [eax+34h]
.text:7C830762                 retn
.text:7C830762 _GetLastError@0 endp

Edit: note that the return value of GetLastError reported by binee is incorrect ([1] 0x2025e0bf: P kernel32.dll:GetLastError() = 0xb0010000), it should be 0x2a not 0xb0010000). Furthermore, not that the first assembly instruction of GetLastError is reported by binee as [1] 0x2025e0bf: dec esi, but should be .text:7C830759 mov eax, large fs:18h.

Potential PE Parsing Code Improvements

I was looking at the PE parsing code and wanted to note some areas that could potentially be improved upon

binee/pefile/pefile.go

Lines 260 to 273 in d9419fd

// copy the optional headers into their respective structs
if uint16(binary.Size(OptionalHeader32{})) == pe.CoffHeader.SizeOfOptionalHeader {
pe.OptionalHeader = &OptionalHeader32{}
pe.PeType = Pe32
if err = binary.Read(r, binary.LittleEndian, pe.OptionalHeader); err != nil {
return nil, errors.New(fmt.Sprintf("Error reading optionalHeader32 in file %s: %v", path, err))
}
} else {
pe.OptionalHeader = &OptionalHeader32P{}
pe.PeType = Pe32p
if err = binary.Read(r, binary.LittleEndian, pe.OptionalHeader); err != nil {
return nil, errors.New(fmt.Sprintf("Error reading optionalHeader32p in file %s: %v", path, err))
}
}

The OptionalHeader32 and OptionalHeader32P structures include space for 16 DataDirectories, but it's not guaranteed that there will be 16. In these cases, the SizeOfOptionalHeader might be less than the checks expect, which would cause issues (or could populate the DataDirectories with invalid data). I can share a few example cases if you'd like.

binee/pefile/pefile.go

Lines 823 to 827 in d9419fd

if self.PeType == Pe32 {
rva = self.OptionalHeader.(*OptionalHeader32).DataDirectories[index].VirtualAddress
} else {
rva = self.OptionalHeader.(*OptionalHeader32P).DataDirectories[index].VirtualAddress
}

It might be worth checking that index < min(16, NumberOfRvaAndSizes) and return nil otherwise. A similar check might also be good to have in all of the functions that have similar code using DataDirectories[0] or DataDirectories[1]. Also, the 'Certificate Table' (index 4) RVA stores a file offset instead of an actual RVA, so it might be worth skipping that one.

Provide optional support for emulation without `apisetschema.dll`

Hi @kgwinnup and @jholowczak!

I stumbled upon Binee today, and what a pleasure it has been to start diving into it. You've essentially managed to capture an idea I've been playing around with myself for quite some time, and made it into a beautiful working system. Thanks for sharing Binee with the open source community!

As I wanted to take binee out for a spin, I started with a simple "hello world" sample (see foo.exe and foo.go below).

The first issue I ran into was file 'apisetschema.dll' not found, which is expected, as I have not (yet) downloaded the docker image. I'm currently travelling so downloading 10 GB would be limiting.

$ binee foo.exe
2019/11/21 21:01:44 file 'apisetschema.dll' not found

I know the rationale for implementing support for apisetschema.dll as there may exist several versions of a given DLL. However, as there are quite a few PE binaries that are capable of running without apisetschema.dll present, it would seem preferable to also add optional support using binee without requiring apisetschema.dll to be present.

On the system I'm currently running, I have access to all DLLs used by the sample set of binaries I'd like to analyze, but I do not have access to apisetschema.dll.

How much effort would be require to allow binee to analyze PE executables without requiring apisetschema.dll to be present?

I may peek around a bit in the code and see if I can make this optional, or if it would require a redesign of the DLL loader.

Wish you all the best and happy coding!

Cheers,
Robin


Contents of foo.go:

package main

func main() {
	println("foo")
}

Command used to compile foo.go:

GOARCH=386 GOOS=windows go build -o foo.exe foo.go

Building binee on windows

Hello; I was wondering if anyone managed to build binee directly on windows w/o the docker image ?
I built all the components using the docker file as a guide but now stuck on unicorn's go bindings

# github.com/unicorn-engine/unicorn/bindings/go/unicorn
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lunicorn
collect2.exe: error: ld returned 1 exit status

help would be much appreciated
Thanks!

Installation fails

Hello! During the installation I get an error:

make[1]: Leaving directory '/unicorn/samples'
make -C qemu -j4
make[1]: Entering directory '/unicorn/qemu'
make[2]: Nothing to be done for 'all'.
make[1]: Leaving directory '/unicorn/qemu'
  GEN     libunicorn.so.1
cc: error: qemu/arm-softmmu/exec.o: No such file or directory
cc: error: qemu/arm-softmmu/translate-all.o: No such file or directory
cc: error: qemu/arm-softmmu/cpu-exec.o: No such file or directory
cc: error: qemu/arm-softmmu/tcg/tcg.o: No such file or directory
cc: error: qemu/arm-softmmu/tcg/optimize.o: No such file or directory
<SKIPPED>
cc: error: qemu/sparc64-softmmu/exec.o: No such file or directory
cc: error: qemu/sparc64-softmmu/translate-all.o: No such file or directory
cc: error: qemu/sparc64-softmmu/cpu-exec.o: No such file or directory
cc: error: qemu/sparc64-softmmu/tcg/tcg.o: No such file or directory
cc: error: qemu/sparc64-softmmu/tcg/optimize.o: No such file or directory
cc: error: qemu/sparc64-softmmu/fpu/softfloat.o: No such file or directory
cc: error: qemu/sparc64-softmmu/cpus.o: No such file or directory
cc: error: qemu/sparc64-softmmu/ioport.o: No such file or directory
cc: error: qemu/sparc64-softmmu/memory.o: No such file or directory
cc: error: qemu/sparc64-softmmu/cputlb.o: No such file or directory
cc: error: qemu/sparc64-softmmu/memory_mapping.o: No such file or directory
cc: error: qemu/sparc64-softmmu/hw/sparc64/sun4u.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/translate.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/cpu.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/fop_helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/cc_helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/win_helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/mmu_helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/ldst_helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/int64_helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/vis_helper.o: No such file or directory
cc: error: qemu/sparc64-softmmu/target-sparc/unicorn64.o: No such file or directory
make: *** [libunicorn.so.1] Error 1
Makefile:307: recipe for target 'libunicorn.so.1' failed
The command '/bin/sh -c git clone https://github.com/unicorn-engine/unicorn &&   cd unicorn &&   UNICORN_ARCHS="x86" ./make.sh &&   ./make.sh install' returned a non-zero code: 2

I tried to fix it with Dockerfile command "pip install unicorn", but failed.

type assertion panic in `windows/loader.go`: interface conversion: interface {} is *pefile.OptionalHeader32P, not *pefile.OptionalHeader32

Running binee foo_32.exe results in the following type assertion panic, as the type of the optional header is not *pefile.OptionalHeader32, but rather *pefile.OptionalHeader32P. See attached foo_32.exe sample.

$ binee foo_32.exe
panic: interface conversion: interface {} is *pefile.OptionalHeader32P, not *pefile.OptionalHeader32

goroutine 1 [running]:
github.com/carbonblack/binee/windows.(*WinEmulator).createLdrEntry(0xc000114900, 0xc000138100, 0x1, 0x9)
	/home/u/Desktop/binee/windows/loader.go:303 +0x3ec
github.com/carbonblack/binee/windows.(*WinEmulator).initPe(0xc000114900, 0xc000138000, 0x7ffec35b39b6, 0xa, 0x4, 0x4, 0xc000044640, 0x1, 0x1, 0xc000044600, ...)
	/home/u/Desktop/binee/windows/loader.go:826 +0xaad
github.com/carbonblack/binee/windows.New(0x7ffec35b39b6, 0xa, 0x4, 0x4, 0xc000044640, 0x1, 0x1, 0x0, 0x0, 0x0, ...)
	/home/u/Desktop/binee/windows/winemulator.go:288 +0x235b
main.main()
	/home/u/Desktop/binee/main.go:192 +0xa7b

panic: runtime error: slice bounds out of range

Followed steps as per the build guide.
Copied all dll files from a windows 10 sys32 into the correct place.

There were no test files in the repo so dropped in calc.exe and tried to run against that

root@bae5a0b3b375:/bineedev/go/src/binee# ./binee ../../../calc.exe
panic: runtime error: slice bounds out of range

goroutine 1 [running]:
binee/pefile.(*PeFile).readImports(0xc0000e4000)
	/bineedev/go/src/binee/pefile/pefile.go:640 +0xbbe
binee/pefile.LoadPeFile(0x7ffebeb925c7, 0x20, 0x0, 0x0, 0x0)
	/bineedev/go/src/binee/pefile/pefile.go:325 +0x1f07
binee/windows.New(0x7ffebeb925c7, 0x20, 0x4, 0x4, 0xc000058610, 0x1, 0x1, 0x0, 0x0, 0x0, ...)
	/bineedev/go/src/binee/windows/winemulator.go:283 +0x20b1
main.main()
	/bineedev/go/src/binee/main.go:176 +0x604

Question|Consult: Benignware Emulation of LOLBAS Interpreters

Greetings, I love your project and am researching it before I install it.

This is a question only:

Can binee allow for emulation of the Windows Terminals/Consoles apps interactively?

Specifically - CMD.EXE, POWERSHELL.EXE

I want to learn how the programs work using Binee.

Other examples I need to run are networking utilities: PING.EXE, ROUTE.EXE

API Set Dump should obey custom config

I wanted to test binee and make sure it got the DLLs correctly, but I used a custom config ("win10_64" instead of 32). Unfortunately, it was hardcoded to use the default "win10_32" config. The code for this is here. I'm happy to put together a PR for this flag to obey a custom config that gets passed in with -c, but I'm curious if this is worthwhile or relevant. Thoughts?

Output:

root@04f06cefb9a9:~/go/src/binee# ./binee -A -c config/my_config.yaml
2019/08/19 20:34:21 file 'apisetschema.dll' not found
root@04f06cefb9a9:~/go/src/binee# cat config/my_config.yaml 
root: "os/win10_64/"
root@04f06cefb9a9:~/go/src/binee# ls os/win10_64/windows/system32/
advapi32.dll  apisetschema.dll	crypt32.dll  kernel32.dll  mswsock.dll	ntdll.dll  secur32.dll	shell32.dll  shlwapi.dll  user32.dll  ws2_32.dll

Issues with mingw32-compiled PE32

I wrote a simple test app:

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char* argv[]) {
    printf("Test! Hello World!\n");
    return EXIT_SUCCESS;
}

It compiles cleanly on mingw32 and Visual Studio. The VS version runs without issue in binee, but the mingw32 version has some issues reporting state, but seems to run anyway:

[1] 0x217625d0: F GetSystemTimeAsFileTime(lpSystemTimeAsFileTime = 0xb7feffc4) = 0xb7feffc4
[1] 0x21769350: P GetCurrentProcessId() = 0xb7feffc4
[1] 0x201233b0: P GetCurrentProcessId() = 0xb7feffc4
[1] 0x2175bc80: P GetCurrentThreadId() = 0x1001
[1] 0x21768950: F GetTickCount() = 0x5dd80d68
[1] 0x21760d70: F QueryPerformanceCounter(lpPerformanceCount = 0xb7feffcc) = 0x1
[1] 0x214094c0: F _initterm(PVPV = 0x40700c, PVPV = 0x407018) = 0x0
[1] 0x214094c0: F _initterm(PVPV = 0x407000, PVPV = 0x407008) = 0x1
[1] 0x217658d0: F SetUnhandledExceptionFilter(lpTopLevelExceptionFilter = 0x401e30) = 0x4
[1] 0x213ea580: F malloc(size = 0x4) = 0xa000072e
[1] 0x21409e30: F _lock(locknum = 0x8) = 0x0
[1] 0x213f9dd0: P __dllonexit(func = 0x401520, pbegin = 0xb7fefec8, pend = 0xb7fefecc) = 0x401520
[1] 0x21409e30: F _lock(locknum = 0x8) = 0xb7fefe98
[1] 0x213ea100: F _msize(memblock = 0x0) = 0x0
[1] 0x213ea670: F realloc(memblock = 0x0, size = 0x0) = 0x0
[1] 0x213ea670: F realloc(memblock = 0x0, size = 0x10) = 0x0
[1] 0x21409fe0: F _unlock(locknum = 0x8) = 0x0
[1] 0x21409fe0: F _unlock(locknum = 0x8) = 0x0
[1] 0x21409e30: F _lock(locknum = 0x8) = 0x0
[1] 0x213f9dd0: P __dllonexit(func = 0x401640, pbegin = 0xb7fefee8, pend = 0xb7fefeec) = 0x401640
[1] 0x21409e30: F _lock(locknum = 0x8) = 0xb7fefeb8
[1] 0x213ea100: F _msize(memblock = 0x0) = 0x0
[1] 0x213ea670: F realloc(memblock = 0x0, size = 0x0) = 0x0
[1] 0x213ea670: F realloc(memblock = 0x0, size = 0x10) = 0x0
[1] 0x21409fe0: F _unlock(locknum = 0x8) = 0x0
[1] 0x21409fe0: F _unlock(locknum = 0x8) = 0x0
[1] 0x2141d0e0:  **puts**() = 0x1
[1] 0x21416700:  **_fileno**() = 0xb7feff08
[1] 0x21409e30: F _lock(locknum = 0x11) = 0x11
[1] 0x21416700:  **_fileno**() = 0x21457620
[1] 0x213edbe0:  **_isatty**() = 0x1
[1] 0x213d91a0:  **_errno**() = 0x1
[1] 0x200f7330: P GetLastError() = 0x1
[1] 0x20117760: F FlsGetValue(dwFlsIndex = 0xffffffff) = 0x0
[1] 0x200ead70: F GetModuleHandleW(lpModuleName = '') = 0x400000
[1] 0x2012b0d0: F GetVersionExW(lpVersionInformation = 0xb7fefd1c) = 0x12
[1] 0x20130900: F HeapCreate(flOptions = 0x0, dwInitialSize = 0x1000, dwMaximumSize = 0x0) = 0x123456
[1] 0x201b8ac7: F EncodePointer(Ptr = 0x0) = 0x0
[1] 0x213d2840: P _CrtSetDbgBlockType() = 0x0
[1] 0x201b8ac7: F EncodePointer(Ptr = 0x213dd670) = 0x213dd670
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x214571cc, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x21457204, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x2145723c, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x21457274, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x214572ac, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x214572e4, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x2145731c, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x21457354, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x2145738c, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x214573c4, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x214573fc, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x21457434, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x2145746c, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20125840: F InitializeCriticalSectionEx(lpCriticalSection = 0x214574a4, dwSpinCount = 0xfa0, Flags = 0x4000000) = 0x1
[1] 0x20132470: F FlsAlloc(lpCallback = 0x21409760) = 0x0
[1] 0x201bbb73: F HeapAlloc(hHeap = 0x123456, dwFlags = 0x8, dwBytes = 0x214) = 0xa0000742
[1] 0x20116d90: F FlsSetValue(dwFlsIndex = 0x0, lpFlsData = 0xa0000742) = 0x1
[1] 0x21409e30: F _lock(locknum = 0xd) = 0x201b865d
[1] 0x21409fe0: F _unlock(locknum = 0xd) = 0x214581c0
[1] 0x21409e30: F _lock(locknum = 0xc) = 0x214581c0
[1] 0x21409fe0: F _unlock(locknum = 0xc) = 0x2145793c
[1] 0x200ead70: F GetModuleHandleW(lpModuleName = '') = 0x400000
[1] 0x201bbb73: F HeapAlloc(hHeap = 0x123456, dwFlags = 0x8, dwBytes = 0x214) = 0xa0000966
[1] 0x20116d90: F FlsSetValue(dwFlsIndex = 0x0, lpFlsData = 0xa0000966) = 0x1
[1] 0x21409e30: F _lock(locknum = 0xd) = 0x201b865d
[1] 0x21409fe0: F _unlock(locknum = 0xd) = 0x214581c0
[1] 0x21409e30: F _lock(locknum = 0xc) = 0x214581c0
[1] 0x21409fe0: F _unlock(locknum = 0xc) = 0x2145793c
[1] 0x201bf791: F SetLastError(dwErrCode = 0x0) = 0x2145793c
[1] 0x213fb4b0:  **_invalid_parameter**() = 0x0
[1] 0x20121d90: F OutputDebugStringA(lpOutputString = 'Invalid parameter passed to C runtime function.\n') = 0xb7fefec0
[1] 0x21416740:  **_flsbuf**() = 0x54
[1] 0x21416700:  **_fileno**() = 0x54
[1] 0x213edbe0:  **_isatty**() = 0x1
[1] 0x213d91a0:  **_errno**() = 0x1
[1] 0x200f7330: P GetLastError() = 0x1
[1] 0x20117760: F FlsGetValue(dwFlsIndex = 0x0) = 0xa0000966
[1] 0x201bf791: F SetLastError(dwErrCode = 0x0) = 0xa0000966
[1] 0x213fb4b0:  **_invalid_parameter**() = 0x0
[1] 0x20121d90: F OutputDebugStringA(lpOutputString = 'Invalid parameter passed to C runtime function.\n') = 0xb7fefe88
[1] 0x201bbb73: F HeapAlloc(hHeap = 0x123456, dwFlags = 0x8, dwBytes = 0x1000) = 0xa0000b8a
[1] 0x2142c190: P memcpy(dest = 0xa0000b8b, char = 0x404001, count = 0x11) = 0x11
[1] 0x21409fe0: F _unlock(locknum = 0x11) = 0x11
[1] 0x214096f0: F exit() = 0x0

I also noticed that the mingw32 version has a lot of extra sections, and is 350K vs. 9K from VS2019.

unable to resolve indirect call; e.g. call eax, with eax = 0

With #31 and #33 applied, binee was now able to emulate foo_32.exe.

However, upon execution, it arrived at the instruction call eax with eax = 0. As such, the execution stopped. So, there seems to be some unimplemented user land feature, that prevents complete execution of this binary. Note that the binary in question is the most simple "hello world" Go binary for 32-bit Windows (with its source code listed at the end of #29 (comment)).

As such, I'm simply creating this issue, such that the underlying cause can be tracked down.

$ binee -vv foo_32.exe
---
eax -->  0xb0010000 = 0x0
ebx -->  0x00000000
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7ff0000 = 0x0
eip -->  0x0044c2e0
         0xb7ff0028 = 0x0
         0xb7ff0024 = 0x0
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
esp -->  0xb7ff0000 = 0x0
         0xb7fefffc = 0x0
         0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
[1] 0x0044c2e0: jmp 0xffffd910
---
eax -->  0xb0010000 = 0x0
ebx -->  0x00000000
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7ff0000 = 0x0
eip -->  0x00449bf0
         0xb7ff0028 = 0x0
         0xb7ff0024 = 0x0
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
esp -->  0xb7ff0000 = 0x0
         0xb7fefffc = 0x0
         0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
[1] 0x00449bf0: sub esp, 8
---
eax -->  0xb0010000 = 0x0
ebx -->  0x00000000
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449bf3
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0x0
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449bf3: mov eax, dword ptr [esp + 8]
---
eax -->  0x00000000
ebx -->  0x00000000
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449bf7
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0x0
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449bf7: lea ebx, [esp + 0xc]
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449bfb
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0x0
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449bfb: mov dword ptr [esp], eax
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449bfe
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0x0
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449bfe: mov dword ptr [esp + 4], ebx
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449c02
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0xb7ff0004
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449c02: jmp 0xe
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449c10
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0xb7ff0004
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449c10: mov eax, dword ptr [esp]
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449c13
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0xb7ff0004
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449c13: mov ebx, dword ptr [esp + 4]
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7fefff8 = 0x0
eip -->  0x00449c17
         0xb7ff0020 = 0x0
         0xb7ff001c = 0x0
         0xb7ff0018 = 0x0
         0xb7ff0014 = 0x0
         0xb7ff0010 = 0x0
         0xb7ff000c = 0x0
         0xb7ff0008 = 0x0
         0xb7ff0004 = 0x0
         0xb7ff0000 = 0x0
         0xb7fefffc = 0xb7ff0004
esp -->  0xb7fefff8 = 0x0
         0xb7fefff4 = 0x0
         0xb7fefff0 = 0x0
         0xb7feffec = 0x0
         0xb7feffe8 = 0x0
         0xb7feffe4 = 0x0
         0xb7feffe0 = 0x0
         0xb7feffdc = 0x0
         0xb7feffd8 = 0x0
         0xb7feffd4 = 0x0
         0xb7feffd0 = 0x0
[1] 0x00449c17: sub esp, 0x80
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7feff78 = 0x0
eip -->  0x00449c1d
         0xb7feffa0 = 0x0
         0xb7feff9c = 0x0
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
esp -->  0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
[1] 0x00449c1d: and esp, 0xfffffff0
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c20
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c20: mov dword ptr [esp + 0x78], eax
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c24
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c24: mov dword ptr [esp + 0x7c], ebx
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0xb0010000 = 0x0
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c28
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c28: mov ebp, 0x4b2060
---
eax -->  0x00000000
ebx -->  0xb7ff0004 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c2d
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c2d: lea ebx, [esp - 0xff98]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c34
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c34: mov dword ptr [ebp + 8], ebx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c37
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c37: mov dword ptr [ebp + 0xc], ebx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c3a
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c3a: mov dword ptr [ebp], ebx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c3d
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c3d: mov dword ptr [ebp + 4], esp
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c40
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x0
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c40: pushfd 
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff6c = 0x80
eip -->  0x00449c41
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
esp -->  0xb7feff6c = 0x80
         0xb7feff68 = 0x0
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
[1] 0x00449c41: pushfd 
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff68 = 0x80
eip -->  0x00449c42
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
         0xb7feff6c = 0x80
esp -->  0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
[1] 0x00449c42: xor dword ptr [esp], 0x200000
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff68 = 0x200080
eip -->  0x00449c49
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
         0xb7feff6c = 0x80
esp -->  0xb7feff68 = 0x200080
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
[1] 0x00449c49: popfd 
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff6c = 0x80
eip -->  0x00449c4a
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
esp -->  0xb7feff6c = 0x80
         0xb7feff68 = 0x200080
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
[1] 0x00449c4a: pushfd 
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff68 = 0x80
eip -->  0x00449c4b
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
         0xb7feff6c = 0x80
esp -->  0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
[1] 0x00449c4b: pop eax
---
eax -->  0x00000080
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff6c = 0x80
eip -->  0x00449c4c
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
esp -->  0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
[1] 0x00449c4c: xor eax, dword ptr [esp]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff6c = 0x80
eip -->  0x00449c4f
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
         0xb7feff70 = 0x0
esp -->  0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
[1] 0x00449c4f: popfd 
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c50
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c50: test eax, 0x200000
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c55
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c55: jne 0x2f
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x0
eip -->  0x00449c57
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x0
         0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c57: mov dword ptr [esp], 2
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x2
eip -->  0x00449c5e
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x0
esp -->  0xb7feff70 = 0x2
         0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c5e: mov dword ptr [esp + 4], 0x474e20
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x2
eip -->  0x00449c66
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x0
         0xb7feff74 = 0x474e20
esp -->  0xb7feff70 = 0x2
         0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c66: mov dword ptr [esp + 8], 0x3d
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff70 = 0x2
eip -->  0x00449c6e
         0xb7feff98 = 0x0
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
esp -->  0xb7feff70 = 0x2
         0xb7feff6c = 0x80
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
[1] 0x00449c6e: call 0xffff58a2
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff6c = 0x449c73
eip -->  0x0043f510
         0xb7feff94 = 0x0
         0xb7feff90 = 0x0
         0xb7feff8c = 0x0
         0xb7feff88 = 0x0
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
esp -->  0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
         0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
[1] 0x0043f510: sub esp, 0x10
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff5c = 0x0
eip -->  0x0043f513
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
esp -->  0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
[1] 0x0043f513: mov eax, dword ptr [esp + 0x14]
---
eax -->  0x00000002
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff5c = 0x0
eip -->  0x0043f517
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
esp -->  0xb7feff5c = 0x0
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
[1] 0x0043f517: mov dword ptr [esp], eax
---
eax -->  0x00000002
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff5c = 0x2
eip -->  0x0043f51a
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
esp -->  0xb7feff5c = 0x2
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
[1] 0x0043f51a: mov eax, dword ptr [esp + 0x18]
---
eax -->  0x00474e20
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff5c = 0x2
eip -->  0x0043f51e
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x0
esp -->  0xb7feff5c = 0x2
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
[1] 0x0043f51e: mov dword ptr [esp + 4], eax
---
eax -->  0x00474e20
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff5c = 0x2
eip -->  0x0043f522
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x474e20
esp -->  0xb7feff5c = 0x2
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
[1] 0x0043f522: mov eax, dword ptr [esp + 0x1c]
---
eax -->  0x0000003d
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff5c = 0x2
eip -->  0x0043f526
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x0
         0xb7feff60 = 0x474e20
esp -->  0xb7feff5c = 0x2
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
[1] 0x0043f526: mov dword ptr [esp + 8], eax
---
eax -->  0x0000003d
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff5c = 0x2
eip -->  0x0043f52a
         0xb7feff84 = 0x0
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x3d
         0xb7feff60 = 0x474e20
esp -->  0xb7feff5c = 0x2
         0xb7feff58 = 0x0
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
[1] 0x0043f52a: call 0xfffe6546
---
eax -->  0x0000003d
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff58 = 0x43f52f
eip -->  0x00425a70
         0xb7feff80 = 0x0
         0xb7feff7c = 0x0
         0xb7feff78 = 0x3d
         0xb7feff74 = 0x474e20
         0xb7feff70 = 0x2
         0xb7feff6c = 0x449c73
         0xb7feff68 = 0x80
         0xb7feff64 = 0x3d
         0xb7feff60 = 0x474e20
         0xb7feff5c = 0x2
esp -->  0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
         0xb7feff30 = 0x0
[1] 0x00425a70: sub esp, 0x28
---
eax -->  0x0000003d
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x0
eip -->  0x00425a73
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x0
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425a73: mov eax, dword ptr [esp + 0x2c]
---
eax -->  0x00000002
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x0
eip -->  0x00425a77
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x0
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425a77: cmp eax, 1
---
eax -->  0x00000002
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x0
eip -->  0x00425a7a
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x0
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425a7a: je 0xf8
---
eax -->  0x00000002
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x0
eip -->  0x00425a80
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x0
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425a80: cmp eax, 2
---
eax -->  0x00000002
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x0
eip -->  0x00425a83
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x0
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425a83: je 0xd0
---
eax -->  0x00000002
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x0
eip -->  0x00425b53
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x0
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425b53: mov eax, dword ptr [0x4b0068]
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x0
eip -->  0x00425b59
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x0
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425b59: mov dword ptr [esp], eax
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x111196
eip -->  0x00425b5c
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0x0
esp -->  0xb7feff30 = 0x111196
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425b5c: mov dword ptr [esp + 4], 0xfffffff4
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff30 = 0x111196
eip -->  0x00425b64
         0xb7feff58 = 0x43f52f
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
esp -->  0xb7feff30 = 0x111196
         0xb7feff2c = 0x0
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
[1] 0x00425b64: call 0xaac
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff2c = 0x425b69
eip -->  0x00426610
         0xb7feff54 = 0x0
         0xb7feff50 = 0x0
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
esp -->  0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
[1] 0x00426610: sub esp, 8
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x00426613
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x00426613: mov eax, dword ptr fs:[0x14]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x0042661a
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x0042661a: mov eax, dword ptr [eax]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x00426620
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x00426620: mov eax, dword ptr [eax + 0x18]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x00426623
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x00426623: mov dword ptr [eax + 0x174], 1
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x0044c2e0
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x0042662d
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x0042662d: lea ecx, [esp + 0x10]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x00426631
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x00426631: mov dword ptr [eax + 0x178], ecx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x00426637
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x00426637: mov eax, dword ptr [esp + 0xc]
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x0
eip -->  0x0042663b
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x0
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x0042663b: mov dword ptr [esp], eax
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff24 = 0x111196
eip -->  0x0042663e
         0xb7feff4c = 0x0
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
esp -->  0xb7feff24 = 0x111196
         0xb7feff20 = 0x0
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
[1] 0x0042663e: call 0xfffffef2
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff20 = 0x426643
eip -->  0x00426530
         0xb7feff48 = 0x0
         0xb7feff44 = 0x0
         0xb7feff40 = 0x0
         0xb7feff3c = 0x0
         0xb7feff38 = 0x0
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
esp -->  0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
         0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
[1] 0x00426530: sub esp, 0x14
---
eax -->  0x00111196
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426533
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426533: mov eax, dword ptr fs:[0x14]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x0042653a
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x0042653a: mov eax, dword ptr [eax]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0xb7feff34 = 0xfffffff4
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426540
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426540: mov ecx, dword ptr [eax + 0x18]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x0044c2e0
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426543
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426543: mov edx, dword ptr [esp + 0x18]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00111196
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426547
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426547: mov dword ptr [ecx + 0x170], edx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00111196
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x0042654d
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x0042654d: mov edx, dword ptr [ecx + 0x80]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426553
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426553: test edx, edx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426555
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426555: je 0x77
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x004265cc
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x004265cc: xor eax, eax
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x004265ce
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x004265ce: jmp 0xffffffb3
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426581
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426581: mov dword ptr [esp + 0x10], ecx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426585
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426585: mov byte ptr [esp + 0xf], al
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426589
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426589: mov edx, dword ptr [0x4b1c70]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x0042658f
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x0042658f: mov dword ptr [esp], edx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000000
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426592
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426592: lea edx, [ecx + 0x170]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000170
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x00426598
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x0
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x00426598: mov dword ptr [esp + 4], edx
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000170
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff0c = 0x0
eip -->  0x0042659c
         0xb7feff34 = 0xfffffff4
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
esp -->  0xb7feff0c = 0x0
         0xb7feff08 = 0x0
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
[1] 0x0042659c: call 0x24bf4
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000170
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b190
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b190: mov eax, dword ptr [esp + 4]
---
eax -->  0x00000000
ebx -->  0xb7fdffd8 = 0x0
ecx -->  0x00000000
edx -->  0x00000170
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b194
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b194: mov ebx, dword ptr [esp + 8]
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0x00000170
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b198
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b198: mov edx, esp
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b19a
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b19a: mov ecx, dword ptr fs:[0x14]
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x004b2060
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b1a1
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b1a1: mov ebp, dword ptr [ecx]
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x00000000
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b1a7
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b1a7: cmp ebp, 0
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x00000000
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b1aa
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b1aa: je 0x63
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x00000000
esp -->  0xb7feff08 = 0x4265a1
eip -->  0x0044b20d
         0xb7feff30 = 0x111196
         0xb7feff2c = 0x425b69
         0xb7feff28 = 0x0
         0xb7feff24 = 0x111196
         0xb7feff20 = 0x426643
         0xb7feff1c = 0x0
         0xb7feff18 = 0x0
         0xb7feff14 = 0x0
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
esp -->  0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
[1] 0x0044b20d: sub esp, 0x20
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x00000000
esp -->  0xb7fefee8 = 0x0
eip -->  0x0044b210
         0xb7feff10 = 0x170
         0xb7feff0c = 0x0
         0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
esp -->  0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
         0xb7fefee0 = 0x0
         0xb7fefedc = 0x0
         0xb7fefed8 = 0x0
         0xb7fefed4 = 0x0
         0xb7fefed0 = 0x0
         0xb7fefecc = 0x0
         0xb7fefec8 = 0x0
         0xb7fefec4 = 0x0
         0xb7fefec0 = 0x0
[1] 0x0044b210: and esp, 0xfffffff0
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x00000000
esp -->  0xb7fefee0 = 0x0
eip -->  0x0044b213
         0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0x0
esp -->  0xb7fefee0 = 0x0
         0xb7fefedc = 0x0
         0xb7fefed8 = 0x0
         0xb7fefed4 = 0x0
         0xb7fefed0 = 0x0
         0xb7fefecc = 0x0
         0xb7fefec8 = 0x0
         0xb7fefec4 = 0x0
         0xb7fefec0 = 0x0
         0xb7fefebc = 0x0
         0xb7fefeb8 = 0x0
[1] 0x0044b213: mov dword ptr [esp + 4], edx
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x00000000
esp -->  0xb7fefee0 = 0x0
eip -->  0x0044b217
         0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0xb7feff08
esp -->  0xb7fefee0 = 0x0
         0xb7fefedc = 0x0
         0xb7fefed8 = 0x0
         0xb7fefed4 = 0x0
         0xb7fefed0 = 0x0
         0xb7fefecc = 0x0
         0xb7fefec8 = 0x0
         0xb7fefec4 = 0x0
         0xb7fefec0 = 0x0
         0xb7fefebc = 0x0
         0xb7fefeb8 = 0x0
[1] 0x0044b217: mov dword ptr [esp], ebx
---
eax -->  0x00000000
ebx -->  0x00000170
ecx -->  0x00000000
edx -->  0xb7feff08 = 0x4265a1
edi -->  0x0044c2e0
esi -->  0x0044c2e0
ebp -->  0x00000000
esp -->  0xb7fefee0 = 0x170
eip -->  0x0044b21a
         0xb7feff08 = 0x4265a1
         0xb7feff04 = 0x0
         0xb7feff00 = 0x0
         0xb7fefefc = 0x0
         0xb7fefef8 = 0x0
         0xb7fefef4 = 0x0
         0xb7fefef0 = 0x0
         0xb7fefeec = 0x0
         0xb7fefee8 = 0x0
         0xb7fefee4 = 0xb7feff08
esp -->  0xb7fefee0 = 0x170
         0xb7fefedc = 0x0
         0xb7fefed8 = 0x0
         0xb7fefed4 = 0x0
         0xb7fefed0 = 0x0
         0xb7fefecc = 0x0
         0xb7fefec8 = 0x0
         0xb7fefec4 = 0x0
         0xb7fefec0 = 0x0
         0xb7fefebc = 0x0
         0xb7fefeb8 = 0x0
[1] 0x0044b21a: call eax

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.