出于无聊和记事本确实不怎么好用的目的,所以准备给记事本添加上下翻页的功能。

首先要做的事情就是修改程序入口点,这样一来才能优先获取程序的控制权,废话就不多说了。

1.       想要修改程序的入口点首先就要观察下程序员先的入口点在什么位置,这样一来等我们的处理完毕后还是要把控制权还给记事本,以免出现错误。

用LoadPE看看记事本的一些信息


从这里可以很清楚的发现磁盘文件入口在400偏移处而文件对齐是7800字节大小,实际使用的是7748字节大小,那么也就是说7800-7748=b8h空间可以供我们插入代码

2.       知道了即将插入代码的地方,那么就准备好机器码以便处理,这里我们先只修改程序入口,其余的操作以后再写。

给Windows的记事本添加上下翻页功能(1)[原创]_第1张图片

从这里我们可以看到程序原先的入口偏移地址在739dh处,也就是说我们做完自己的处理后要跳转到这里。

B8 9D 73 00 01 ff E0

这便是

mov  eax, 0100739dh

jmp   eax

的机器码

3.       修改文件入口

因为文件偏移地址为400h而实际使用的字节数为7748h那么也就是说我们要在 7b49h处插入我们的代码。(再声明一次,时间有限今天只能写修改入口,至于其他操作,后面有时间的时候再继续写)

用UE打开notepade.exe,在空隙处插入我们新的入口代码


4.       修改程序入口点

因为原先的代码段偏移地址为1000h,而实际.text节大小为7748那么也就是说新的程序入口应该是7748h+1000h=8749h

给Windows的记事本添加上下翻页功能(1)[原创]_第2张图片

修改完毕后点击Sava。

再次运行notepad.exe

给Windows的记事本添加上下翻页功能(1)[原创]_第3张图片

没有任何异常,那么修改程序入口成功。

当然你可能认为什么都还么做呢。呵呵,入口控制权被拿到了,那么接下来就可以自由发挥了。

时间有限,下次将在今天修改的入口点给notepad.exe载入我们的dll文件,紧接着,用我们的dlll来处理记事本的翻页功能待续…