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

VB注入有关问题

2012-04-12 
VB注入问题 帮我看一下这段代码,内存有没有释放掉,或者说还有什么别的问题...FunctionRun_ASM(pidAsLong)A

VB注入问题

帮我看一下这段代码,内存有没有释放掉,或者说还有什么别的问题...  

Function   Run_ASM(pid   As   Long)   As   Long
Dim   i   As   Long,   tmp_Addr   As   Long,   RThwnd   As   Long,   h   As   Long
ReDim   AsmCode(Len(OPcode)   /   2   -   1)   As   Byte
For   i   =   0   To   UBound(AsmCode)
        AsmCode(i)   =   CByte( "&H "   &   Mid(OPcode,   i   *   2   +   1,   2))
Next
h   =   OpenProcess(PROCESS_ALL_ACCESS,   False,   pid)
tmp_Addr   =   VirtualAllocEx(h,   ByVal   0&,   UBound(AsmCode)   +   1,   MEM_COMMIT,   PAGE_EXECUTE_READWRITE)
WriteProcessMemory   h,   ByVal   tmp_Addr,   ByVal   VarPtr(AsmCode(0)),   UBound(AsmCode)   +   1,   ByVal   0&
RThwnd   =   CreateRemoteThread(h,   ByVal   0&,   0,   ByVal   tmp_Addr,   ByVal   0&,   ByVal   0&,   ByVal   0&)
VirtualFreeEx   h,   tmp_Addr,   UBound(AsmCode)   +   1,   MEM_RELEASE
CloseHandle   RThwnd
CloseHandle   h

End   Function  

其中   变量OPcode   是机器码

[解决办法]
你建立了远程线程后,就直接返回了啊

那个线程应该已经启动了吧

你指的 "内存没释放 ",是指哪里的内存?
[解决办法]
如果你能用h = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
打开进程,哪么这代码应该是能正确执行,除非OPcode中代码级问题。
如不能打开进程,可能还需要提升权限
[解决办法]
广海来的吧,呵呵,你这是wulin,还是zhuxian。
既然已经VirtualFreeEx,并且已经CloseHandle了,那么从这个过程看应该是没问题的。看看你其它代码是否有问题吧。记住句柄OPEN了,用过就要迅速CLOSE,似乎OPENPROCESS有个BUG,长时间不CLOSE,会造成内存泄露,不过我并不确定。
说实话,我虽然比较喜欢VB,不过这个工作用VB来做确实不太好。还是考虑将CALL的代码放入一个DLL来调用吧。而且这个CLASS似乎无法作到输入参数给CALL?不太清楚。
我的做法是VB GUI + VC的消息钩子(调用CALL),还是很稳定的,wulin或是zhuxian最长有过40多小时没出过错。且内存变化不大。

热点排行