
---------------[  Changelog for scdbg/libemu  ]---------------
4.24.13  - W api support for GetTempFileName, GetTempPath, URLDownloadToFile
         - new hook: RtlZeroMemory (supports /hex), swprintf
         
4.16.13  - RtlDecompressBuffer hook (supports -i)
         - bugfix: peb tweak, ntdll mod name (harmony)
         - step over shows addr, read_hex supports eip, dbgshell.dllmap
         
4.10.13  - 3 new opcodes: push/pop es, push fs. Added support for ES: override in emu_cpu_step
           added: emu_memory_segment_setval/getval , emu_cpu_implemented_inst_cnt
           added: .segs debug shell function,  gui_launcher.more.Disasm 
           test: scdbg /wstr 0x401000-0x64A130000000060fa00731C026A13000000090  -vvv -nofile
           
4.5.13   - new hooks: IsDebuggerPresent,ZwQueryInformationProcess,OpenFileMappingA,time,srand,rand,inet_addr,wsprintfA
		 - bugfix: malloc now logs allocations to include with /d dump option.
		 
3.25.13  - new hooks: fprintf, exit, GetLocalTime, ExitWindowsEx 
					  SetFileAttributesA, GetLastError
		   bugfix: fread (cdecl)

2.18.13  - add versions to known dlls (displayed in dbgshell .pl dllmap)
         - added /raw  - Raw Patch Mode: load fpath into mem at 0xBase (not PE aware can use multiple times)   
		 - added /poke - Write 0xValue at 0xBase (can use multiple times) 
		 - undocumented /rop mode added (can use with /offset)
		      - will have to load target dll opcodes with /raw and used IAT entries with /poke
		 - added several rop signatures
		 - new hook ZwSetInformationProcess 
		 - added ability to process .scmd files. Drag and drop them on icon and it will run contents as cmdline.
		 - added -dllmap command line option
		 - added string poke (-spoke) command to write binary (0xHexChars) or ascii strings to memory
		 
1.18.13  - findsc mode update/bugfix + % complete output
         - findsc mode now supports -dump which will give more context/debugging output for findsc mode.
         - NtQueryInformationFile partial implementation (FileInfoClass), bugfix GetEnvVarA

11.30.12 - new hooks: LookupPrivilegeValueA,OpenProcessToken,EnumProcesses,GetModuleBaseNameA,HttpQueryInfoA, StrToIntA,gethostbyname
           bugfix: _stricmp should have been cdecl
           
11.15.12 - added logging of last 10 instructions executed (debug shell j command)
         - added SetEndofFile, SetSystemTime hooks
         
9.25.12  - added /va option to force memory range to exist ex: /va 0c1010a0-4

9.13.12  - hooks: strrchr, RtlMoveMemory, CopyMemory, CreateProcessW, ZwUnmapViewOfSection

8.23.12  - bugfix: VirtualAlloc huge allocs could stomp on stack memory
         - added psapi.dll and GetMappedFileNameA

8.2.12   - bugfix libemu JG command (instr_jcc_7f)

7.5.12   - new hooks: Get/Set/Resume Thread Functions, (exec transferrable)
         - libemu POP_DWORD patch for esp special case
         
4.6.12   - new hooks: OpenEventA, CreateEventA

3.3.12   - dump files now honor -temp override
         - file drops now default to shellcode parent dir, still honor -temp though
         - gui_launcher project added
         
1.6.12   - new hooks: memcpy, strcat (msvcrt and ntdll)
         - ntdll.text section now hardcoded in. fixes crash under Win7 when trying
           to live load from memory. (mapping of sections is different)
        
12.31.11 - kernel32.text section now hardcoded in so offsets always line up
           in mem copies of loaded dlls copied to emu memory 
           (offsets may not line up if not xpsp3 but not worth xx mb for this)
           
12.19.11 - new hooks: ExpandEnvironmentStringsA,lstrlenA,lstrcmpiA, lstrcpyA

12.7.11  - added repne support for stosx (0xAB)
         - disabled SetConsoleMode, messes up Windows 7 accepting input in findsc and dbgshell...
         
11.16.11 - new hooks: GetWindowThreadProcessId, OpenProcess
		 - added support for -u to -dir mode
		 - added /support/parseBulk (data visualizer for -dir mode output)
		 
10.3.11 - emu_env_w32_load_dll use actual module size to copy k32 and ntdll live memory to emu
          (some system like CN had crash with hardcoded default - thanks Zhi Liu)
        - added repne support for stosb

9.26.11 - hooks: msvcrt.strstr, msvcrt.strtoul, CreateDirectoryA, SetCurrentDirectoryA

8.8.11  - /min (min steps to trigger findsc record), findsc now honors /foff
		
7.20.11 - new opcode: rdtsc, tested/enabled existing: instr_imul_69

6.24.11 - new export emu_memory_read_wide_string, 9 new hooks (SCM)
        - CloseServiceHandle, DeleteService, ControlService
		- OpenServiceA/W, RegOpenKeyExA/W, OpenSCManagerA/W
		- patch can now be run on its own, now supports embedded comments
		- /sigs supports /disasm, /hooks interactive highlights

6.22.11 - repne support for movsb added, 5 new hooks: (not yet interactive)
		- InternetConnectA, HttpOpenRequestA, HttpSendRequestA, InternetCloseHandle, GetCurrentThread
		- /hooks now shows interactive hooks in yellow
		
6.8.11  - emu_memory_read_string now allows for partial string reads
	    - new function emu_string_clear
        - string dereferencing added to deref_regs, stack dump, and dword dump
        	
6.6.11  - made sure interrupts throw error (linux shellcode no longer supported)
        - new hook: SHGetFolderPathA
        - removed userhooks.h, ADDHOOK macro now builds prototypes
5.21.11
		- export_copy fix * 2, more hook conversions to popd(), /lookup mode
		- removed emu_track (was used in graphing and shellcode detection code)
		- added /api option to locate API table in memory (scans body/stack/allocs)
5.19.11
		- imlemented movsw/movsb with rep support
		- new hooks: IsBadReadPtr, GetCommandLineA	
		- updated: GetTempFileNameA, GetTempPathA
		- new option: /cmd for use with GetCommandLineA
		- hooks now receive emu_env_w32 instead of emu_env and emu_env.env removed
5.18.11
		- implemented rep for stosw/stosd
		- implemented Antispam system using win.env->lastApiCalled/lastApiHitCount
		- new hook fread (w/antispam & interactive mode support)
5.17.11
        - reimplemented repe/repne for scasb (thanks to markus for pointing out error)
        - new hooks: EnumWindows, GetClassNameA
5.16.11
	exe - experimental changes to CreateFileMapping, MapViewOfFile
	    - new options -cfo (CreateFileOverride) , -u (unlimited steps)
	    - emu_string->data from void* to char* (avoid need for emu_string_char)
	    - repne scasb implemented
	    - new hooks: GetUrlCacheEntryInfoA,CopyFileA mods to GetFileSize

5.14.11
	dll - updated ws2_32, urlmon, and msvcrt dlls (and peb) all have saved binaries now
	    - added ordinals for all dlls exports, added hook by ordinal function
	    - GetProcAddress now support ordinal lookups.
	    - updated memory monitor dll ranges for new and updated dlls
	    - error handling tweaks for invalid memory disasm and step requests
5.5.11
	exe - FinFirstFileA, FindClose, DeleteUrlCacheEntryA, FindWindow
	    - copying kernel32 from live memory so all opcodes are present for scanners
	
4.22.11
    dll - switched over to using a static PEB, see ./support/pebBuilder project
    
4.14.11
	exe - added /patch /b0 /ba /dir commands
	    - fread in vc is different that in gcc.. had to switch fopen mode to use CreateFile
	    - WriteFile, CreateFile etc now proxy to real api. (required because of above)
	
4.11.11
	exe - /dump mode highlights possible start offsets (90,E8.E9)
	    - kinda added: MultiByteToWideChar, URLDownloadToCacheFileW,CreateProcessInternalW, CreateFileW
	    - ported code base to Visual Studio 2008. some features stripped like graphing, linux hooks, getpc
	    - new hooks CreateFileMappingA, WideCharToMultiByte, GetLogicalDriveStringsA
	    - still some fixups required from port.

3.31.11
    exe - added logging stub for ZwQueryVirtualMemory (only Section Name class implemented)
	    - added bunch of signed to unsigned casts to make gcc 4.x happy
		- dbgshell dump words now lets you walk mem negative with -1/-2 options
		- added hooks GetEnvironmentVariableA,VirtualAllocEx,WriteProcessMemory,CreateRemoteThread,DialogBoxIndirectParamA
		- allocs and threads launched in "external" process are (successfully) run in process
	dll - added max_alloc check to _lwrite,malloc,fwrite,sendto,send

3.27.11
    exe - added hooks: RevertToSelf, RtlExitUserThread, FlushViewOfFile, UnmapViewOfFile
	    - added some overview stats at end of run (ispacked,hookdetect,patchapi, peb list)

3.18.11 
    dll - added support for advapi32, shdocvw, 
        - GetProcAddress retval now defaults to 0 now.
        - WinExec cmdline read bumped up to 1256 chars
	exe - added hooks: RTLDestroyEnvirnoment, LoadLibraryExA, GetModuleFileNameA 
	    - fixed stack adjust bug with some api (+=)
	    - added opcodes to GetProcAddress function for sig scanner technique.
		- WriteFile buf addr -> real addr (was dll alloc addr) 
		- disasm/reg display now shown pre-execution 
		- -- and ++ option to adjust GetFileSize value (sometimes necessary)
		- added /hooks option to dump list of supported api (currently 85 functions & 11 dlls)

3.10.11
	dll - added support for shlwapi.dll, loaddll - made sure all image size is mapped
	      emu_memory_read_string, never returns a null pointer now always a valid object (even if blank)
		  might add dll setting -readanyaddr if sc expects certain addresses mapped..
	exe - added hooks: GetTempFileNameA, CreateThread, SHRegGetBoolUSValueA, GetSystemTime

3.7.11 w/fopen option..
	exe - added /fopen option for shellcode which scans w/ GetFileSize()
		  added hooks for SetFilePointer, ReadFile, strstr, strtoul, FreeLibrary,
		  GlobalFree, GetCurrentProcess, TerminateProcess
		  /bp and /laa now accept api names to break at
	dll - enabled support for TEST A8 and A9 (seems ok with ZF and PF but need more testing..)

2.12.11
    exe - bugfixes/cleanups, new brute force findsc mode, CreateProcessA now supports shellcode
	      which uses its function prolog to put args inline. hexdump mode to examine shellcode
	      added /disasm, /dump, /getpc modes, added hook TerminateThread, support for multiple Allocs
	      dump mode now dumps any allocs made as well..

2.9.11
    dll - implemented mem range monitor with r/w logging
	      void emu_memory_add_monitor_range(char id, uint32_t start_at, uint32_t end_at);
          void emu_memory_set_range_access_monitor(uint32_t lpfnCallback);
	exe - implemented mem range monitor (log patchs and hook detection to win api mode -mdll)
	      dug into unhandledExceptionFIlter more, not perfect but enabled..working for some (some to complex)

2.5.11
    dll - mem addresses < 0x1000 no longer writable
		  added support for ntdll..
	exe - added hooks for ZwTerminateThread, ZwTerminateProcess
		- experimented with GlobalAlloc shellcode that hooks UnhandledExceptionFilter (fail)
		- misc cleanups/tweaks

2.2.11
	dll - added support for wininet.dll
	exe - added hooks InternetOpenA, InternetOpenUrlA, InternetReadFile, VirtualAlloc
	
2.1.11
    dll - added memory monitor feature 2 new exports, 
         void emu_memory_set_access_monitor(uint32_t lpfnCallback);
		 void emu_memory_add_monitor_point(uint32_t address);
	exe - implemented logging of access to key memory offsets when in /mm mode
	      (allows you to quickly see which peb elements it uses for profiling)
	      added support for top-stack and seh based methods of getting k32 base
	      SetUnhandledExceptionFilter hook now also sets fs:0 handler. 

1.31.11
	dll - tweaked PEB init routines, now works with method used in Shellcoders Handbook (didier msgbox example)
	exe - added dbg cmd g (go) and .so (step over)
	
1.28.11
	re-exposed getpc mode with /findsc option, start at file offwset with /foff option
	added hooks for GlobalAlloc, UrlDownloadToCacheFileA, system
	added .savemem .lp .pl .reg .poke1 .poke4 to debug shell 
	changed partial lookup_address fulllookupaddress, read_hex now can accept unsigned long vals
	updated lookup to search all api not just subset (used in stack dump, deref regs, dump dwords, and .lp)
	implemented nanny on _lcreate series hooks, tested interactive mode w *create
	added support for hexdump mode in all appropirate hooks
	misc cleanups
	
1.26.11 -dzzie
	dll changes
		- added support for shell32.dll
		- added support for user32.dll
		- emu_disasm_addr now uses offset
	sctest
		- added hooks for GetModuleHandleA, user32.MessageBoxA, GetFileSize,
		                  shell32.ShellExecuteA, shell32.SHGetSpecialFolderPathA, 
		                  CreateFileMappingA, CreateProcessInternalA, MapViewOfFile
		- implemented a generic hook handler (multiple fx in one stub)

1.22.11 -dzzie
   cloned from current libemu git
   dll changes 
      - added export emu_disasm_addr
      - added export emu_env_w32_export_new_hook so app devs can implement api hooks without a stub in dll
      - made sure all kernel32 hooks call user hooks 
      - added support for salc (0xd6) opcode
      - all changes marked w/dzzie
   sctest project has been heavily modified see help screen. 
      - new hooks, new cmdline opts, changed logging, interactive debug prompt, support for seh, etc
      - i would rename it to scdbg in the source but i dont want to screw up the make files
         so just rename the exe after compilation.. 
      - the visual studio workspace and project files are only for editing ! you must use gcc to compile
         this has been compiled with the current version of cygwin with dev packages installed.
   
         
30.11.2008 libemu 0.2.0
 ( created with svn log -r HEAD:1385 | grep -v -- "----" | grep -v ^r | grep -v ^libemu | grep -v "^$")
 - stubs for 
   - instr_daa_27
   - instr_das_2f
   - instr_aas_3f
   - instr_wait_9b
   - instr_pushf_9c
   - instr_popf_9d
   - instr_sahf_9e
   - instr_lahf_9f
   - instr_mov_8c
   - instr_mov_8e
   to support obfuscated nop slides (ADMmutate)
 - changed sctest verbosity
   -v be verbose, print level info
   -vv print info & instructions
   -vvv print info, instructions & cpu state
 - gcc 4.3.2 enforces return value checks for (v)asprintf, system, f(read|write), in most cases (ran out of memory) we can just bail out with exit(-1)
 - there is no sctestmain.h
 - fix sctest's append()
 - accept using sane socklen_t value
 - rename the INT(bits) and UINT(bits) macros to INTOF(bits) and UINTOF(bits) as INT collides on windows
 - fixed off by one for dumping the tests
 - added _NO_TESTS #define check for sctest to not compile any test cases into the library
   this is required by Malzilla to include a Windows libemu binary in their distribution
   that is not flagged by A/V (Bojan Spasic)
 - nanny shadowed a local parameter
 - createprocess did not work on x86_64 as the structs got different sizes, now we do not copy the structs, but only the values we want
 - emu_env_w32 hook setup: status messages disabled, logging should be managed by the application
 - emt64 fixes to allow compiling on x86_64 plattforms
   maybe it is a bad habbit to store integer values on pointers to save some bytes
   in this case I stored eip in a hashmap, using the hashmaps key pointer of type void * as store
   compiling the code on a 64bit plattform .. made the cast invalid, as sizeof(void *) != sizeof(uint32_t)
   therefore I had to cast to uintptr_t before casting to uint32_t in some places.
   another thing is printing memory addresses, %08x works fine on 32bit plattforms, to be portable one should use %p, which does not prepend leading zeros.
   
 - sctest, for interactive cmd prompt sessions, allow recording the cmd prompt session
   creates a 'spy' process with socketpairs, duping the filedescriptors, and multiplexing using select
   basically, the spy reads from the sockets, and writes the data to the cmd prompt process using socketpairs
   the cmd prompts stdout and stderr is written to a socketpair, which is read by the spy process, and gets written to the connection
   the process id returned by CreateProcess(cmd) is the spy's process id, so WaitForSingleObject waits for the spy process to exit
   the spy process exists if the cmd prompt ends (the socketpair gets closed), the connection gets closed, or we hit a timeout
 - fix bug introduced by making profiles optional, env->win->loaded_dlls[i]->baseaddr is invalid if we found it, as the loop does not stop
 - hook URLDownloadToFile in sctest
 - allow hooking URLDwnloadToFile
 - sctest, use the optional profiling
 - win32/linux env: profiling is optional
 - allow hooking WinExec
 - improved backtracking: 64A1...      mov eax,[fs:...] now inits eax
 - sctest
   - implement hooks for fopen fwrite fclose CreateFile WriteFile CloseHandle
     implement a nanny to make sure we do not use invalid filehandles
     add the nanny to the Makefile
   now sctest can emulate shellcodes which download files themselves, it will store the file in /tmp/<filename>-XXXXXX
 - use emu_profile_argument_add_sockaddr_ptr where possible to save some lines
 - move win32 fopen fclose fwrite hooks from env_w32_dll_export_kernel32_hooks to env_w32_dll_export_msvcrt_hooks
 - profile GetProcAddress and WriteFile
 - allow hooking for CreateFile WriteFile and CloseHandle
 - to simplify profiling, create emu_profile_argument_add_sockaddr_ptr for use in connect&bind hooks
 - implement default logger as callback
 - porting to big endian broke cmp for lil endian, as endian.h was not included, and the big endian code did not honor argumentsizes for cmp reg{16,32} , imm8
   fixed
 - profile win32 sendto()
 - introduce emu_hashmap_{ptr,string}_{hash,cmp} functions, to avoid further duplicated code, remove duplicate hashtable hash and cmp functions
 - fix sctest Makefile
 - split sctest in different files and move to tools/sctest/
 - add hooks for win32 ExitProcess and ExitThread
 - add profile information for ExitProcess, ExitThread and SetUnhandledExceptionFilter
 - basic big endian support
   - main problem is unaligned memory access leading to SIGBUS 
     - imm16 is unaligned by default. all operations using imm16 have/had to be sanatized
     - emu_memory access, reading/writing dwords and words requires inverting the byte order on big endian
     - emu_memory has use bcopy to create aligned copies of vars
     - emu_memory has to use bcopy instead of memcpy to access the memory, as memcpy sigbusses on unaligned memory
     - the INSTR_CALC macro's have to use aligned copies of the values, I ported the required macros for sctest and instrtest, a some are left 'todo'
     - instrtest uses nasm to create binary code from asm, nasm does not work correctly on sparc64, therefore the binary data for the test which failed on sparc64 due to nasm failure got added
 - adc instr_group_1_83_adc used imm16 for 'ADC r/m16,imm8' instead of imm8, fixed
 - sctest (void)va_arg calls, so gcc does not complain
   - host is optional for --bind and --connect
 - remove interactive-hooks from configure and README
 - install profile and env headers to proper location
 - emu_log_set_logcb introduced: void my_emu_logcb)(struct emu *e, enum emu_log_level level, const char *msg){ printf("%s", msg); emu_log_set_logcb(emu_logging_get(emu), my_emu_logcb);
 - for the win32 environment s/printf/logDebug/g 
 - add emu_env.h to include_HEADERS
 - sctest, introduce --cmd to allow overriding commands 
  example sctest --cmd cmd="/bin/sh -c \"cd ~/.wine/drive_c/; wine 'c:\windows\system32\cmd_orig.exe' \"" will execute a real windows shell using wine if cmd is executed by shellcode
 - sctest, opts orderd by name, 
   introduced --connect/-c and --bind/-b to override connect/binds when run --interactive
 - Michal Spadlinski pointed out that instr_group_1_82 is an alias for instr_group_1_80
   and the instr_group_3_f6 used instr_group_3_f7 instead of instr_group_3_f6
 - restructured the process environment
   now we have emu_env as the holder for linux and win32 as well as emu_env_hook for the api hooks.
   env functions take emu_env and emu_env_hook as args, and access the required *thing* themselves
   furthermore I introduced a different kind of hooking api calls using variadic callbackfunctions
   the benefit is easy, the interactive hooks do not have to be part of libemu itself any longer
   and hooking calls does not require access to the emu/cpu/memory
   all you have to do is retrieve the arguments for the function to be hooked from the va_list using va_arg
 - sctest got -i --interactive, using the interactive hooks from sctest itself
 - scprofiler, more code
 - profiling for socket in w32 env
 - adjust sctest
 - small list attail fix in run_and_track
   init the env in run_and_track
 - slightly smarter traversal
   if traversal fails due to stack operations which are not track(ed|able), or something different
   bruteforce the instructions 'infront' of the known, taking the static tree as input
   from the result, take the first offset doing 256 steps
   one might be able to speed this up, caching already tested positions using the hashtable which is given as parameter to run_and_track
 - emu_profile_function_argument_get arg0 is return value
 - instrtest tests for special cases of sib/modrm
 - void *emu_profile_function_argument_get(struct emu_profile_function *function, int argc);
   added, expected to work
 - emu_profile supports shorts
 - sctest, minor changes, try to reestablisch getpctest()
 - scprofiler, testdummy for emu_profile_function_argument_get()
 - env win32
   - add msvcrt export section
   - hook _execv
 - emu_profile_{dump,parse} added
 - emu_profile_function has returnvalue now
 - sctest -p FILENAME dumps the profile
 - profiling for recv fopen fwrite fclose added
 - introduce render_array, required for arrays (used in execve() on linux), emu_profile_argument_array_start & emu_profile_argument_array_end
 - profile alle required calls on linux
 - some minor fixes in sctest
 - auto* libcargos with --enable-cargos --with-cargos-lib= --with-cargos-inc=
  sctest uses per-program specific CPPFLAGS and LDFLAGS to link libcargos if avalible
 - sctest runs leakfree in graphmode
 - emu_profile rename *_ref to *_ptr
 - rename emu_profile_argument_{start,end} to emu_profile_argument_struct_{start,end}
 - introduce render_none, usefull for refs where the actual value is uninteresting
 - free the mallocs, emu_profile properly cleans up now
 - sctest runs leakfree
 - emu_profile introduces an api for storing function calls and parameters
   storing return values is todo, as well as dumping/rereading the profiles
 - improve sctest codequalitity, split profiling process into prepare() and test, allow reading shellcodes from argos csi files (prepare_argos(struct emu *e))
   using the argos csi profiling will require proper linking with libcargos, which is not done by now.
 - this change will introduce memory leaks
 - python bindings auto* 
 - python bindings, set library_dirs according to @libdir@, create setup.py via configure from setup.py.in
 - sctest, hook linux syscall exit()
 - linux env, add exit(), reorder fork
 - env linux hook fork(), return 4711
 - environments allow providing userdata now, accessing the userdata within a callback is possible using emu_env_linux_syscall->userdata or emu_env_w32_dll_export->userdata
 - move python binding to bindings/python, integrate in autoconf using conditional dirs
 - preliminary libemu python interface, currently only supports testing for shellcodes
 - linux env, header Makefile.am
 - fpu backwards traversal was dodgy, comparing fpu state with eflags does not make any sense
   look at the src/emu_track.c diff to see the mess
   when fixing, the size of the fpu state got shrinked to one bit, we don't need the others anyway
   //TRACK_FPU_LAST_INSTRUCTION had to be adjusted to comply with one bit vars
 - sub reg32_a,reg32_b inits reg32_a if reg32_a == reg32_b
 - proper linux syscall hooking, removed the int_cd code and created a linux environment
   - lookup the syscalls name from a struct, in case of syscall groups like socketcall for accept,socket,connect,... provide a helper fn within the struct which returns the proper syscall name
   - provide default syscall hooks for socketcall, dup2 and execve, stored in a struct
   - for each environment, copy the struct, create a hashtable on (syscall_name, syscall_hook)
   - use emu_env_linux_syscall_hook to overwrite default syscall hooks
 - added the linux environment to sctest
   - drawing graphs from linux shellcode is possible now
 - first functional api hooks for int
 - drafting int hooking for a linux env, the switch structure is way too long, structs are preferable, and the code should move to environment/linux, but at least it shows some basic actions for now
'sctest -t 24 -s 100
verbose = 0
testing (#24) 'linux bindshell'         sys_socket(2)
sys_bind(2)
sys_listen(2)
sys_accept(2)
sys_dup2
sys_dup2
sys_dup2
sys_dup2
sys_dup2
sys_execve
cpu error error accessing 0x0000000b not mapped
stepcount 73
'
 - add group3 to itables
 - pkg-config support, now 'pkg-config --libs --cflags libemu' allows proper linking
 - sctest -o for manual offset, understands hex and decimal
 - instruction group, return -1 if group[i->modrm.opc] is NULL instead of calling NULL
 - add emunids.c to testsuite, won't be build, is EXTRA_DIST



19.09.2007 libemu 0.1.0
 - initial release


