-
-
[旧帖] 用OD修改代码遇到相对地址的问题。 0.00雪花
-
发表于: 2008-10-23 17:31 3080
-
一个dll程序,用PeEdit加了一个输入函数User32.GlobalLock及其它函数
然后用OD把某一个指令
1000151A 68 00B00010 push 1000B000
改为:
1000151A |E9 F1450000 jmp 10005B10
但是用ultraedit修改dll文件之后,发现它出错了,原来dll的映像基址变了。
试着用LordPE和ImportRec把它Dump出来,还是用了绝对地址。
2、我在程序的数据段后面加了一个字符串adsw_acadMainWnd
1000B210 4C 54 20 54 65 78 74 00 41 75 74 6F 43 41 44 20 LT Text.AutoCAD
1000B220 54 65 78 74 00 00 00 00 4B 45 59 53 00 00 00 00 Text....KEYS....
1000B230 61 64 73 77 5F 61 63 61 64 4D 61 69 6E 57 6E 64 adsw_acadMainWnd
//////////////////////////////////////
用OD修改了程序代码后,发现相样是相对地址的问题。
这是我修改的代码:
10005B27 68 30B20010 push 1000B230 ; ASCII "adsw_acadMainWnd"
用UltraEdit打开dll文件也是6830B20010
内存:
1000B220 54 65 78 74 00 00 00 00 4B 45 59 53 00 00 00 00 Text....KEYS....
1000B230 61 64 73 77 5F 61 63 61 64 4D 61 69 6E 57 6E 64 adsw_acadMainWnd
而原程序中这种代码却可以转换成绝对地址
用UltraEdit打开dll跳到0x1018,看到BF 1000b000
再用OD载入DLL,如下,可以看出已经转换为绝对地址
10001032 BF 14B10010 mov edi, 1000B114 ; ASCII "ABCDEFGHIJKLMNini"
内存段:
1000B114 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 69 6E ABCDEFGHIJKLMNin
1000B124 69 00 00 00 41 75 74 6F 43 41 44 20 32 30 30 36 i...AutoCAD 2006
请问我应该怎样修改代码?
然后用OD把某一个指令
1000151A 68 00B00010 push 1000B000
改为:
1000151A |E9 F1450000 jmp 10005B10
但是用ultraedit修改dll文件之后,发现它出错了,原来dll的映像基址变了。
试着用LordPE和ImportRec把它Dump出来,还是用了绝对地址。
2、我在程序的数据段后面加了一个字符串adsw_acadMainWnd
1000B210 4C 54 20 54 65 78 74 00 41 75 74 6F 43 41 44 20 LT Text.AutoCAD
1000B220 54 65 78 74 00 00 00 00 4B 45 59 53 00 00 00 00 Text....KEYS....
1000B230 61 64 73 77 5F 61 63 61 64 4D 61 69 6E 57 6E 64 adsw_acadMainWnd
//////////////////////////////////////
用OD修改了程序代码后,发现相样是相对地址的问题。
这是我修改的代码:
10005B27 68 30B20010 push 1000B230 ; ASCII "adsw_acadMainWnd"
用UltraEdit打开dll文件也是6830B20010
内存:
1000B220 54 65 78 74 00 00 00 00 4B 45 59 53 00 00 00 00 Text....KEYS....
1000B230 61 64 73 77 5F 61 63 61 64 4D 61 69 6E 57 6E 64 adsw_acadMainWnd
而原程序中这种代码却可以转换成绝对地址
用UltraEdit打开dll跳到0x1018,看到BF 1000b000
再用OD载入DLL,如下,可以看出已经转换为绝对地址
10001032 BF 14B10010 mov edi, 1000B114 ; ASCII "ABCDEFGHIJKLMNini"
内存段:
1000B114 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 69 6E ABCDEFGHIJKLMNin
1000B124 69 00 00 00 41 75 74 6F 43 41 44 20 32 30 30 36 i...AutoCAD 2006
请问我应该怎样修改代码?
赞赏
他的文章
- [注意]一大早被刷屏 16701
- [求助]在异常处理中如何获得调用堆栈 1694
- [求助]看不懂eax为何变成65766966 2212
看原图
赞赏
雪币:
留言: