分享

在VB里用代码注入(zt)

 战神之家 2014-06-03

在VB里用代码注入(zt)

(2007-06-26 00:45:52)
标签:

vb

汇编

注入

call

分类: 汇编最高
 哈哈,喵要好好研究这篇文章,不用放弃vb(vb感觉很好用呀)去学delphi了。嘿嘿!
 
 
很多人因为需要用CALL由VB转向DELPHI,只因为VB不支持嵌入汇编
就像很久很久以前~~~~~ 在VB里用代码注入(zt)
有人说VB不能创建Windows Standard DLL,VB不能使用多线程~~~~~
但事实大家都知道的
其实不过是方法的问题,用VC,DELPHI更方便一点,用VB麻烦一点~~~
不说废话,转入正题:

在VB里用代码注入
常见的方法,是把汇编指令转成机器码后预先存入数组中,然后再写入内存
不过麻烦的是汇编指令转成机器码的过程 在VB里用代码注入(zt)
但是呢,如果你看了
http://www./bbs/read.php?tid=36673&page=1&toread=1
以后,其实也不怎么麻烦滴 在VB里用代码注入(zt) ,里面已经有简单的示例了

如果你还嫌麻烦~~~~~
那么我就只好隆重推荐一个小玩意 在VB里用代码注入(zt) ~~~
AsmInVB(http://www.AsmInVB.com)
这是阿国哥的作品(不是偶滴~~~ 在VB里用代码注入(zt) )
如何使用这个小玩意呢
首先当然是要去下载一个AsmInVB插件了
安装说明什么的里面都有了
然后打开VB(什么,没装VB?~~~去死 在VB里用代码注入(zt) ,没装你来这里做什么)
先确定AsmInVB已经被加载,你可以在"外接程序管理器"里看到
然后~~~没有什么然后了,直接开工写代码在VB里用代码注入(zt)

========================================================

来看个例子吧

以下是放在窗体里的

Private Sub Command1_Click()
Dim hWnd As Long, hPid As Long, hProcess As Long
Dim ThreadAddr As Long, TmpHandle As Long, hThreadID As Long

#If IS_RELEASE Then
hWnd = FindWindow(vbNullString, "Element Client")
GetWindowThreadProcessId hWnd, hPid
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, hPid)

ThreadAddr = VirtualAllocEx(hProcess, ByVal 0&, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE)
TmpHandle = WriteProcessMemory(hProcess, ThreadAddr, AddressOf AsmFunc, 128, vbNull)
TmpHandle = CreateRemoteThread(hProcess, ByVal 0&, ByVal 0, ByVal ThreadAddr, ByVal 0&, ByVal 0&, ByVal 0&)
VirtualFreeEx hProcess, ThreadAddr, 128, MEM_RELEASE
CloseHandle ThreadAddr
CloseHandle hProcess

#Else
MsgBox "DEBUG模式下是看不到效果滴~~~"
#End If

End Sub

==========================================================
以下是必须放在模块里的

#If IS_RELEASE Then
Public Function AsmFunc()
    '_asm{overall}
    '_asm{
    'pushad
    'mov eax,008f271ch
    'mov ebx, [eax]
    'mov eax, [ebx+20h]
    'mov esi, eax
    'mov eax, [esi+628h]
    'mov ecx, esi
    'shr eax, 5
    'not al
    'and al,1
    'push eax
    'mov eax,0044AD50h
    'call eax
    'popad
    'ret
    '}
End Function
#End If

===================================================
以上代码通过测试 (完美国际上下飞机CALL)
注意:需要生成为EXE程序执行后才能看到效果,在VB.IDE调试模式下是看不到效果滴!

(补充)如果是有参数的CALL,比较麻烦,不管用上面哪种方法,你需要在指令中预留位置,在注入完代码然后自己把参数的地址写进去,如果写错了位置~~~在VB里用代码注入(zt) 在VB里用代码注入(zt)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多