OllyMachine is a plugin for OllyDbg. We can use an assembly-like language called OllyMachine Script to write a script to automate OllyDbg.
Copy OllyMachine.dll to plugin directory of OllyDbg.
After installation, there will be an OllyMachine sub-menu in the OllyDbg's plugins, just choose the corresponding menu to run.
The default extension of script file is ".oms", for the meaning of "OllyMachine Script". When opening this type of files, the internal assembler will assemble source codes to bytecodes and then feed to Virtual Machine to run.
The default extension of bytecode file is ".omb", for the meaning of "OllyMachine Binary". When opening this type of files, the internal loader will load the bytecodes to Virtual Machine to run.
Attention:
OllyMachine will automatically judge whether the opening file is a script file or a bytecode file, if it is a bytecode file, it will be running as the bytecodes branch, otherwise will running as the script branch.
Before running a script or a bytecode file, you must ensure that there is already a debugging process opened, or else it may extremely brings on a running error or exception!
OllyMachine is a free software, I reserved its copyright, but not for other rights.
[2004-12-07] 0.20 version.
Added: four new APIs:
WriteMemHexes
ReadFileIntoMem
VirtualAllocEx
VirtualFreeEx
Added: process flags CF, PF, AF, ZF, SF, DF, OF, for example:
not cf mov zf, 0 mov pf, 1
Added: you can call OllyMachine from your plugin:
HMODULE hOMDll; typedef void (__cdecl *RUNOMFILE)(const char *); RUNOMFILE RunOMFile; hOMDll = GetModuleHandle("OllyMachine.dll"); // Check that the other plugin is present and loaded if (hOMDll) { // Get address of exported function RunOMFile = (RUNOMFILE)GetProcAddress(hOMDll, "RunOMFile"); // Check that the other plugin exports the correct function if (RunOMFile) { RunOMFile("test.oms"); // Execute script RunOMFile("test.omb"); // Execute binary } }
Fixed: another slash bug in double quotation string.
Fixed: a bug: some arithmetic instructions such as sub, mul, ... didn't process OllyDbg's registers.
[2004-12-01] 0.19 version.
Added: one new output API:
UpdateDumpBuf
Added: three new breakpoint APIs:
EOBINT3
EOBHW
EOBMEM
[2004-11-30] 0.18 version.
Added: two new search APIs:
ReverseFind
ReverseSearch
Added: two new replace APIs:
CopyBytesTo
ReplaceBytesEx
Fixed: a bug in API "Search".
[2004-11-29] 0.17 version.
Fixed: embedded asm, I rewrite the lexer and parser, and fixed several bugs.
Fixed: in the versions front, OllyMachine.ini will be kept in the main directory of OllyDbg, now I fix it to the same directory of OllyMachine.dll.
Fixed: an exception synchronization bug in VM.
[2004-11-28] 0.16 version.
Added: embedded asm: __asm { }
Added: three new APIs:
IsWinNTKernel
GotoCpuAddr
GotoDumpAddr
[2004-11-27] 0.15 versioin.
Added: one new searching API:
Search
Added: two new running APIs:
StepIntoS
StepOverS
Added: five debug assistant APIs:
FindProcBegin
FindProcEnd
FindPrevProc
FindNextProc
FollowCall
[2004-11-26] 0.14 version.
Added£ºtwo new output APIs:
PrintBufToDump
PrintBufToNewDump
Activated: DumpAsPE£¬but current version could not fix import table yet. (special thanks to Blue)
Fixed: Slash bug in double quotation string.
[2004-11-24] 0.13 version.
Added: Buffer APIs:
malloc
free
strcpy
strcat
strlen
ltoa
memcpy
Added: When compiling, if .omb file already exists, prompt user to confirm overwriting.
Fixed: Wrong GetProcAddress's return value.
Fixed: int3 and memory breakpoint's synchronization bug in VM.
[2004-11-23] 0.12 version.
Added: directly quote string, example: invoke Msg, "Hello!"
Added: Find, supports wildcards.
Added: HideOD and UnHideOD, also available in Windows XP Sp2.
Modified: ReadMemLong and WriteMemLong.
Fixed: "Recent Files" sometimes will not update while OD exits.
Fixed: Bugs in FindOpcode and ReplaceBytes.
[2004-11-21] 0.11 version.
Added: invoke macro for API invoking.
Added: "Recent Files" menu. (thanks to pll621)
Fixed: a bug in VM synchronization.
[2004-11-15] 0.10 version.
Author: Luo Cong
Address: Kingsoft Antivirus Engine Team, ZhuHai, GuangDong Province, China
Zip: 519015
Homepage: http://www.luocong.com
E-Mail: admin[AT]luocong.com