首页
社区
课程
招聘
[原创]修改OllyDBG v2.01 Final的路径为相对路径
发表于: 2013-10-21 13:28 2608

[原创]修改OllyDBG v2.01 Final的路径为相对路径

2013-10-21 13:28
2608
我们今天要修改里面ollydbg.ini的路径
[History]
Data directory=.\udd
Standard library directory=.\dll
Plugin directory=.\plugin

将ollydbg.exe载入od,我们对KERNEL32.WritePrivateProfileStringW下断点,F9后程序中断在下面:
004015FA  |.  E8 CD410F00   call    <jmp.&KERNEL32.WritePrivateProfi>; \WritePrivateProfileStringW
004015FF  |.  5F            pop     edi
00401600  |.  5E            pop     esi
00401601  |.  5B            pop     ebx
00401602  |.  8BE5          mov     esp, ebp
00401604  |.  5D            pop     ebp
00401605  \.  C3            retn

这个不重要,因为程序运行后并没有修改ollydbg.ini里面的路径内容,只是程序退出时才会修改里面的路径内容。
所以我们一直按F5,直至完全运行,然后关闭程序。程序也中断在上面那里:

004015FA  |.  E8 CD410F00   call    <jmp.&KERNEL32.WritePrivateProfi>; \WritePrivateProfileStringW
004015FF  |.  5F            pop     edi
00401600  |.  5E            pop     esi
00401601  |.  5B            pop     ebx
00401602  |.  8BE5          mov     esp, ebp
00401604  |.  5D            pop     ebp
00401605  \.  C3            retn

此时注意堆栈的数值,直至出现
0012CF40   004F66DA  |Section = "History"
0012CF44   0051470E  |Key = "Data directory"
0012CF48   0012CF5C  |String = "C:\Users\Administrator\Desktop\OllyDBG v2.01 Final Version + Highlight theme + all latest compitable Plugins  (2013.10.01)\udd"
0012CF4C   0057F208  \FileName = "C:\Users\Administrator\Desktop\OllyDBG v2.01 Final Version + Highlight theme + all latest compitable Plugins  (2013.10.01)\ollydbg0.ini"

我们按F8直到返回:

00402920  |.  E8 3FECFFFF   call    00401564                         ; \刚才调用的call,这里写入ollydbg.ini
00402925  |.  83C4 10       add     esp, 0x10                        ;  程序返回到这里
00402928  |>  5F            pop     edi
00402929  |.  5E            pop     esi
0040292A  |.  5B            pop     ebx
0040292B  |.  5D            pop     ebp
0040292C  \.  C3            retn

我们按F8直到返回:

0040CE4D  |. /75 17         |jnz     short 0040CE66                  ;  我们在这里设断点
0040CE4F  |. |8B4B 0C       |mov     ecx, dword ptr [ebx+0xC]
0040CE52  |. |51            |push    ecx                             ; /Arg2
0040CE53  |. |8D85 68FDFFFF |lea     eax, dword ptr [ebp-0x298]      ; |
0040CE59  |. |50            |push    eax                             ; |Arg1
0040CE5A  |. |E8 15AB0D00   |call    004E7974                        ; \ollydbg0.004E7974
0040CE5F  |. |83C4 08       |add     esp, 0x8
0040CE62  |. |85C0          |test    eax, eax
0040CE64  |. |74 10         |je      short 0040CE76                  ;  这里可以跳过下面的call
0040CE66  |> \8B13          |mov     edx, dword ptr [ebx]
0040CE68  |.  52            |push    edx                             ; /Arg3
0040CE69  |.  8B4B 08       |mov     ecx, dword ptr [ebx+0x8]        ; |
0040CE6C  |.  51            |push    ecx                             ; |Arg2
0040CE6D  |.  57            |push    edi                             ; |Arg1
0040CE6E  |.  E8 4D5AFFFF   |call    004028C0                        ; \ollydbg0.004028C0
0040CE73  |.  83C4 0C       |add     esp, 0xC                        ;  程序返回到这里
0040CE76  |>  83C3 10       |add     ebx, 0x10
0040CE79  |>  8B03           mov     eax, dword ptr [ebx]
0040CE7B  |.  85C0          |test    eax, eax
0040CE7D  |.^ 75 A4         \jnz     short 0040CE23

我们在0040CE4D处设断点,并取消之前的断点,继续F9,程序再次中断在0040CE4D,此时我们查看寄存器的内容:

EAX 00000005
ECX 0012EFA0 UNICODE ".\dll"
EDX 00000000
EBX 0050EBBC ollydbg0.0050EBBC
ESP 0012EF94
EBP 0012F238
ESI 00000001
EDI 0057F208 UNICODE "C:\Users\Administrator\Desktop\OllyDBG v2.01 Final"

我们发现ecx保存的是类似路径的内容,所以我们在这里打补丁:

在0040CE4B修改为:

0040CE4B     /E9 1A8E0E00   jmp     004F5C6A
0040CE50     |90            nop
0040CE51     |90            nop

004F5C6A      8BFF          mov     edi, edi
004F5C6C      81F9 00001200 cmp     ecx, 0x120000
004F5C72      7E 15         jle     short 004F5C89
004F5C74      50            push    eax
004F5C75      8A01          mov     al, byte ptr [ecx]
004F5C77      3C 2E         cmp     al, 0x2E
004F5C79      58            pop     eax
004F5C7A      75 0D         jnz     short 004F5C89
004F5C7C      50            push    eax
004F5C7D      8A41 02       mov     al, byte ptr [ecx+0x2]
004F5C80      3C 00         cmp     al, 0x0
004F5C82      58            pop     eax
004F5C83    ^ 0F85 ED71F1FF jnz     0040CE76
004F5C89      85F6          test    esi, esi
004F5C8B    ^ 0F85 D571F1FF jnz     0040CE66
004F5C91      8B4B 0C       mov     ecx, dword ptr [ebx+0xC]
004F5C94    ^ E9 B971F1FF   jmp     0040CE52

其实就是查看ecx的内容是否含有.\

至此已经修改完毕

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 3330
活跃值: (1662)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
2
oh man, old man.
2013-10-21 14:35
0
雪    币: 6499
活跃值: (3117)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
其实我发现原版,只要在UDD目录设置那里填udd,不要加.\  它就自动识别OD目录下面的udd文件夹,而且换目录也会自动识别......
plugins 目录也是如此
2013-10-21 16:14
0
雪    币: 1559
活跃值: (1785)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wbs
4
有没有做好的patch 发布以下 给懒人用的
2013-10-21 16:39
0
雪    币: 10916
活跃值: (3284)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
确实可行,看来是我蛋疼了。
2013-10-21 17:34
0
雪    币: 10916
活跃值: (3284)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
将ollydbg.ini里面的项设置为下面即可!不用打补丁也可以。
但有前提,目录必须是存在的,不然会变成当前目录。

[History]
Data directory=Udd
Standard library directory=Dll
Plugin directory=Plugin
2013-10-21 17:37
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=menglv;1232613]将ollydbg.ini里面的项设置为下面即可!不用打补丁也可以。
但有前提,目录必须是存在的,不然会变成当前目录。

[History]
Data directory=Udd
Standard library directory=Dll
Plugin directory=Plugin[/QUOTE]

这方法实用
2013-10-21 19:55
0
雪    币: 16159
活跃值: (1340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
menglv 确实可行,看来是我蛋疼了。
只要思路是好的,没有蛋痛不蛋痛的。折腾才能进步!
2019-8-22 08:48
0
游客
登录 | 注册 方可回帖
返回
//