|
[原创]刚写完的QQ2010木马源码,绝对免杀(以加上讲解)
好像不支持VISTRA吧,有人测试了吗? |
|
|
|
[原创]刚写完的QQ2010木马源码,绝对免杀(以加上讲解)
厉害!通用版地址代码确实好使! |
|
[原创]刚写完的QQ2010木马源码,绝对免杀(以加上讲解)
代码只对WIN7系统有效,XP暂不支持 |
|
[原创]刚写完的QQ2010木马源码,绝对免杀(以加上讲解)
User32Hook.cpp没看懂,哪个能解释一下,加下注释贴出来: 谁测试了说一下啊?怎么我测试获取QQ版本和号码正确,可是密码是空的? |
|
|
|
[推荐]通过HOOK获取QQ游戏登录密码
好思路,获取QQ登陆密码不容易,通过获取QQ游戏密码不就是QQ密码么,呵呵 |
|
[原创]刚写完的QQ2010木马源码,绝对免杀(以加上讲解)
楼主打包发一下吧 |
|
[原创]刚写完的QQ2010木马源码,绝对免杀(以加上讲解)
谢谢LZ分享,向LZ学习 |
|
VB2008或VB2010可以内联汇编吗?如果可以,请举例简单说明.谢谢!!!
可以! VB内嵌汇编语言解决方案 采用调用CallWindowProc API接口,来实现对二进制代码的执行,通过这种方式能使得VB代码达到执行效率等同甚至高过用C++来编制的代码 基本思路:汇编代码,可以存在一个byte类型的数组中,然后通过某种手段,把系统控制权,转交给这段汇编代码,我们的汇编代码段,就得到了执行。但如何让这段汇编代码,获得系统的控制权限呢?查查WIN API手册,就可以知道有CallWindowProc这个函数。这个函数本是用于调用用户自己定义的窗口过程的,其原形如下: 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 Long 它有5个参数。lpPrevWnFunc是一个long型,等于用户自己窗口过程的地址,其余3个都是窗口过程所必须的参数,详见MSDN. 我们只需要关心第一个参数:lpPrevWndFunc,窗口过程地址。如果,我们把自己的汇编代码地址,传进去会怎么样?当然,CallWindowProc就把这个地址,当成窗口过程地址,然后,调用这段汇编代码了。我们的汇编代码便得到执…… 当然,也得装摸做样的吧,将其余4个参数传进去,就传4个0算了,因为这4个参数,我们更本不用,但又是CallWindowProc必须的,不要忘了,我们传进去的lpPrevWndFunc,并非真正的窗口过程地址,而是自己的汇编码地址。 具体一点,比如,我们要嵌入一段什么也不干的汇编代码: Dim AsmCode() as byte redim AsmCode(8) '生成机器代码 AsmCode(0) = &H58 'POP EAX AsmCode(1) = &H59 'POP ECX AsmCode(2) = &H59 'POP ECX AsmCode(3) = &H59 'POP ECX AsmCode(4) = &H59 'POP ECX AsmCode(5) = &H50 'PUSH EAX '你可以在这里添加你想执行的Asm代码... '.....如果添加的话,后面的数组偏移需要做相应改动 '你添加的代码在这里结束 '将控制权交还主程序 AsmCode(6) = &HC3 'RET '..... 然后: CallDllFunction = CallWindowProc(VarPtr(AsmCode(0), 0, 0, 0, 0) VarPtr函数,用于取变量地址。返回一个long 型值。 为什么前面要执行几个pop和一个push呢?因为我们是以一段汇编代码首地址,伪装成一个窗口过程的,系统调用CallWindowProc时,实际上除lpPrevWndFunc,我们还传入了4个参数,就是上面的的4个0,而CallWindoProc函数在调用lpPrevWndFunc这段汇编代码程序时,把其余4个参数是压入了堆栈的。相当于执行了以下代码: xxxx00A4H: push 0 xxxx00A6H: push 0 xxxx00A8H: push 0 xxxx00AAH: push 0 xxxx00ACH: call VarPtr(AsmCode(0))(这段代码我们是看不见的,是CallWindoProc在内部做的处理) xxxx00AFH: ...... 因为我们根本没有用到这4个参数,所以我们只需要将它弹出。所以,我们执行了4个POP ECX,就是把这4个不用的参数弹出,以保持堆栈指针的正确性。但为什么还要,第一句的:POP EAX,还是因为CallWindowProc把lpPrevWndFunc当成一个窗口过程的原故,因为作为一个正常的窗口过程,在执行Call语句的时候,得把Call语句的下一条指令地址push到堆栈中,用于子程序ret.在上面这段代码就是执行了:push xxxx00afh.事实上,在CallWindowProc中,实际上隐含执行这么几句,我们必须关心的代码: push 0;参数入栈 push 0 push 0 push 0 push xxxx00afh;(当执行call 时,自动执行) 为了能让窗口过程执行结束后堆栈指针保持平衡,当然要执行相应的pop指令,第一个pop eax是把子程序返回的地址暂时保存在寄存器eax中,然后弹出4个不用的参数。 接着把保存在eax中返回地址,压回堆栈。当执行ret时,就能正确返回到CallWindowProc中了 |
|
[讨论]360垃圾
严重同意,我已经不用360了 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值