能力值:
( LV2,RANK:10 )
|
-
-
2 楼
如果你要修改ax值在255以内。就用也是2字节
MOV AL,02
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
可以反汇编这个函数,一般函数开头或者结尾的地方,如果不是4字节对齐的话,会有编译器用0xcc填充,如果发现很多cc,cc,cc,cc连续出现很多字节的情况,那么这一块区域是可以使用的空白区域,jmp到这个地方,再把cc改为你自己的汇编语句就可以了。如果jmp偏移超过128字节,那么可以在128字节的空白区域在继续jmp,直到jmp到合适的空白区域为止。比如只有连续2个cc,cc,而连续10个cc,cc...的区域位于128字节以外,那么可以先jmp到连续2个cc的区域,再jmp到连续10个cc的区域。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
挖哈哈,果然,mov al,1的编码是B0 01.
非常感谢。。。
但是能否指点下 类似windows下修改前5个字节的jmp方法呢? 关键是不知道怎么找一个安全的空间。 在DOS下估计。是3个字节
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
百度一下inline hook不都是jmp前5个字节吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
百度出来的inline hook5个字节是因为那是32位程序,jmp一个字节,后面跟一个地址(4字节),32位程序,地址就是32位。
我要改的exe是DOS下的,16位程序,地址是16位,jmp一个字节,地址2个字节,共3个字节
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
jmp 跳到程序空白的地址
jmp 下条语句
序空白的地址:
XXX
XXX
XXX
XXX
jmp 跳回jmp 下条语句
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
大大,这个空白地址如何确定? 或者说大家一般使用哪里的空间的地址来做这个XXX呢?
直接在程序末尾添加若干字节,然后跳过来可以吗? 如果添加到程序末尾,这个地址应该怎样计算?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
一般是在程序的末尾,就是一堆不像代码的地方,或者是一堆的0。
地址怎么计算,这个就不清楚了。。因为我用od 反编译都有地址的。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
如果拿IDA里来说,
seg000:3020 mov ax,4 ;B8 04 00
seg000:3023 push ax ;50
seg000:3024 xor ax,ax ;33 C0
seg000:3026 push ax ;50
seg000:3027 call IndInfo
我如果要改的话
seg000:3020 nop
seg000:3021 nop
seg000:3022 nop
seg000:3023 nop
seg000:3024 nop
seg000:3025 jmp short loc_3093 ;EB 6C
seg000:3027 call IndInfo
我在loc_3093处push几个我需要的参数,然后jmp short loc_3027就可以了
现在我把那个exe文件使用UltraEdit打开,定位到seg000:3020处(搜索特定HEX字符),把原代码使用nop和jmp填充,其中jmp(EB)后面跟的地址就是loc_3093(简单拿短跳做例,此处是6C),如何确定哪块位置我可以存放代码? dseg0000随便找个位置估计不行。而且,我如何在UltraEdit中定位loc_3093?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
那个程序的末尾,一堆不像代码的地方有没有个学名什么的? 比如说数据段? 代码区?
关键是我需要知道,exe中,哪部分数据是不会被使用的,我可以放心的拿来用
在IDA中,程序末尾是类似dseg:4BD1 db 0FFh一堆的数据,这里我不能用啊,估计是全局变量啊
在dseg之前,是seg001:00A9 这里是程序的代码,也不能改啊
地址计算到是容易。就我LS举的例子, 3025 + 6C + 2 = 3093
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
感谢大大出手。
DOS下程序没有发现有4字节对齐的现象,最多不用的字节只有一个。估计DOS下不需要4字节对齐吧
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
假如原exe是121个字节,我可不可以添加一定数量字节,比如40个,变成161字节长度,然后jmp到122字节处执行,执行完再跳回?
文件的PE头(DOS下不知道是不是也是PE结构)有没有那个地方会标记自身可执行代码最大地址为121 ,如果转跳到122处,会来个崩溃什么的?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
dos的exe 不是 pe结构
把你想要执行的代码添加在文件末尾,开头跳到此处,执行后再跳回去。
其实就是个补丁。
|
|
|