-
-
[原创][讨论]庆祝本人转正,发个原创,文件运行时动态修改data段数据
-
发表于: 2011-3-1 16:01 6643
-
首先感谢monife版主,
为庆祝本人转正, 发表一个思路..
绝对原创. 至于有什么用, 自己想去吧 (小菜之做, 大鸟飞过, 欢迎指点, 欢迎拍砖!)
用处是: 把pe data的某一些字符移动到另外一个地址, 然后在运行时还原到原来的位置
本人不是太懂汇编原理, 这个是我试着写的, 虽然最终表现出来的效果是一样的,
不知道这样子做的话, 对程序有没有影响?
原始(winhex查看):
现在把b999下移两行,
也就是这样:
目标是将00000880这里的四个字节也就是b999移动到000008a0
然后通过如下指令来动态修改从000008a0,恢复到原来的位置00000880
数据段整合:
0040101B > $ B8 50304000 MOV EAX,234.00403050 //原始数据开始地址 ; ASCII "9a9999999999999999999999999999999999999999999999"
00401020 . B9 A0304000 MOV ECX,234.004030A0 //附加数据地址 ; ASCII "b999"
00401025 . BF 00000000 MOV EDI,0
0040102A > 8A1439 MOV DL,BYTE PTR DS:[ECX+EDI] //循环开始地址
0040102D . 885438 30 MOV BYTE PTR DS:[EAX+EDI+30],DL
00401031 . 47 INC EDI
00401032 . 83FF 04 CMP EDI,4 //4附加数据字节数
00401035 .^ 74 C9 JE SHORT 234.00401000 //修改完毕后跳转地址
00401037 .^ 75 F1 JNZ SHORT 234.0040102A //开始下一次循环
od中原始:
循环执行四次后(注意看数据段):
无影响,over:
二进制:B8 50 30 40 00 B9 A0 30 40 00 BF 00 00 00 00 8A 14 39 88 54 38 30 47 83 FF 04 74 C9 75 F1
这个是基本形式 , 你可以根据思路自己diy一下, 比如:
B8 03 30 40 00 B9 C0 30 40 00 BF 00 00 00 00 8A 14 39 88 14 38 90 47 83 FF 03 74 C2 75 F1
(附件可用od调试, 数据段跟随,F7可看到效果, 一个个字节拼接)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课