拿原版的 od 开刀,让它无论如何都只使用当前目录下的 udd 和 plugins 目录。
这样在移动了 od 的位置以后,不需要手动设置目录。
如果当前目录下不存在 udd 和 plugins 目录,则自动创建。
找到原版 od 读取数据的地方:
代码:
udd 004374E4 . 68 A4534D00 push 004D53A4 ; /IniFileName = "E:\Software packges\Debugger\OllyDbg\ollydbg.ini" 004374E9 . 68 04010000 push 104 ; |BufSize = 104 (260.) 004374EE . 68 6C394D00 push 004D396C ; |ReturnBuffer = OLLYDBG.004D396C 004374F3 . 68 68384D00 push 004D3868 ; |Default = "E:\Software packges\Debugger\OllyDbg" 004374F8 . 8D8E 171B0000 lea ecx, dword ptr [esi+1B17] ; | 004374FE . 51 push ecx ; |Key 004374FF . 8D86 981A0000 lea eax, dword ptr [esi+1A98] ; | 00437505 . 50 push eax ; |Section 00437506 . E8 7F7B0700 call <jmp.&KERNEL32.GetPrivateProfileStringA> ; \GetPrivateProfileStringA plugin 0043750B . 68 A4534D00 push 004D53A4 ; /IniFileName = "E:\Software packges\Debugger\OllyDbg\ollydbg.ini" 00437510 . 68 04010000 push 104 ; |BufSize = 104 (260.) 00437515 . 68 703A4D00 push 004D3A70 ; |ReturnBuffer = OLLYDBG.004D3A70 0043751A . 68 68384D00 push 004D3868 ; |Default = "E:\Software packges\Debugger\OllyDbg" 0043751F . 8D96 201B0000 lea edx, dword ptr [esi+1B20] ; | 00437525 . 52 push edx ; |Key 00437526 . 8D8E 981A0000 lea ecx, dword ptr [esi+1A98] ; | 0043752C . 51 push ecx ; |Section 0043752D . E8 587B0700 call <jmp.&KERNEL32.GetPrivateProfileStringA> ; \GetPrivateProfileStringA
代码:
004374E4 68 68384D00 push OLLYDBG.004D3868 004374E9 68 43F64A00 push OLLYDBG.004AF643 ; ASCII "%s\UDD" 004374EE 68 6C394D00 push OLLYDBG.004D396C 004374F3 E8 0E810700 call <jmp.&USER32.wsprintfA> 004374F8 68 68384D00 push OLLYDBG.004D3868 004374FD 68 4AF64A00 push OLLYDBG.004AF64A ; ASCII "%s\Plugins" 00437502 68 703A4D00 push OLLYDBG.004D3A70 00437507 E8 FA800700 call <jmp.&USER32.wsprintfA> 0043750C 6A 00 push 0 0043750E 68 6C394D00 push OLLYDBG.004D396C 00437513 E8 AC7A0700 call <jmp.&KERNEL32.CreateDirectoryA> 00437518 6A 00 push 0 0043751A 68 703A4D00 push OLLYDBG.004D3A70 0043751F E8 A07A0700 call <jmp.&KERNEL32.CreateDirectoryA>
附件是修改后的原版OD。