首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

【200分】征给内嵌机器指令的内存块设置可执行的代码解决办法

2012-03-14 
【200分】征给内嵌机器指令的内存块设置可执行的代码就是使用了类似下面的方式做的特殊功能,因默认肯定是没

【200分】征给内嵌机器指令的内存块设置可执行的代码
就是使用了类似下面的方式做的特殊功能,因默认肯定是没这个"内存块可执行的",编译后在默认DEP数据执行保护打开的系统,如WIN2003中运行有困难.网友给了帮助说要调用相应的API将内存块设置为可执行的,但毕竟自己没做过,所以请大家提供尽可能接近最终VB6中可马上用的代码,谢谢:)

VB code
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _        (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, _         ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Sub Command1_Click()Dim Asm(12) As Byte    Asm(0) = &H58 'pop eax    Asm(1) = &H59 'pop ecx    Asm(2) = &H59 'pop ecx    Asm(3) = &H59 'pop ecx    Asm(4) = &H59 'pop ecx------->VarPtr(Asm(0))输出参数    Asm(5) = &H50 'push eax------>下一条指令地址入栈        '==============要嵌入的代码        Asm(6) = &HC6 '-    Asm(7) = &H1  ' > mov byte ptr[ecx],0 即asm(0)=1    Asm(8) = &H1  '-        Asm(9) = &HC0  '-    Asm(10) = &H21 ' > sal byte ptr[ecx],3 即asm(0)左移3位    Asm(11) = &H3  '-        '==============要嵌入的代码    Asm(12) = &HC3 'ret------>下一条指令地址出栈                CallWindowProc VarPtr(Asm(0)), 0, 0, 0, VarPtr(Asm(0))       'VarPtr(Asm(0)输出参数       '第一个压入堆栈,最后一个弹出       '参数入栈顺序为从右到左        MsgBox Asm(0) '输出8        '要嵌入机器码,首先需要用工具软件将汇编指令转成机器码,如OllyICEEnd Sub


[解决办法]
内嵌汇编

很多种方法都可以的
通用的可以使用CreateRemoteThread,还有就是hook api等方法都行的
[解决办法]
将准备执行的内嵌代码,自代码起始地址到结束地址这个长度加上 具有可读可执行的地址属性就可以过 dep了
ps:dep 只检查内存地址的数据执行权限,这也太儿戏了吧。。。。
说是在浏览器中这个功能能起很大作用,想不明白,怎么个起作用法。。。
[解决办法]
探讨

啥意思,详细说说看?

[解决办法]
楼主测试一下下面的代码:
VB codeOption Explicit
Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Any, ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long

Dim OldProtect As Long
Private Sub Command1_Click()

Dim asm(12) As Byte
Dim lRtn As Long
'修改为可执行、读、写
lRtn = VirtualProtect(asm(0), UBound(asm) + 1, &H40&, OldProtect)
'恢复原来的属性
lRtn = VirtualProtect(asm(0), UBound(asm) + 1, ByVal OldProtect, OldProtect)
End Sub
[解决办法]
8楼 lhcwjy 不是已经给出方法了吗?
将你的 CallWindowProc 语句放在两个 VirtualProtect 语句中间。
[解决办法]
顶楼主 希望多发技术贴

热点排行