论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 2770阅读
  • 2回复

[教程资料]修改OllyDBG v2.01 Final的路径为相对路径 [复制链接]

上一主题 下一主题
离线闪电
 

发帖
27953
今日发帖
最后登录
2024-04-27
只看楼主 倒序阅读 使用道具 楼主  发表于: 2013-10-22 06:11:11
我们今天要修改里面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的内容是否含有.\

至此已经修改完毕
百度一下“闪电软件园”,惊喜等着您哦!
┖───────────────┘┕━━━━┛  

离线woairmvb
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 沙发  发表于: 2013-10-26 22:17:47
这里有你很精彩
离线power3

发帖
1469
今日发帖
最后登录
2024-04-26
只看该作者 板凳  发表于: 2021-09-22 08:04:15
先收蒧下,谢谢分享。