No Picture

c++函数的返回值存在哪?反汇编代码分析

2016年1月17日 shaohua 0

这几天一直在给同学讲数据结构和算法的题,讲题的过程中突然想到这函数的返回值究竟是存放在哪的,为什么可以通过函数的调用来直接给变量赋值。仔细想想这么多年居然没有深究过这个问题,太不应该,于是今天花了些时间来好好研究了一下这个问题。也跟了一些thread,某些前辈的观点是“不应该动不动就提到寄存器,栈,堆这些较底层的概念。完全可以这样理解:返回值保存在一段临时区域,到下一条语句时,返回值被销毁,所以,如果要继续使用返回值,必须将返回值赋予其他变量。”这确实不假,但是我觉得这位前辈应该是在透彻理解了内在的机理之后才这么说的,我觉得作为学习过程还是应该深究一下。 另有一位前辈说“不大于32位的(返回值)在eax中,64位的在edx + eax中。再大就传指针了。” 那么就拿反汇编代码开刀,验证一下。 (一)  基础知识 在看反汇编代码之前,应该有几点要明确一下: 1.每个进程对应一个Call Stack(调用栈),而CallStack 又由许多Stack Frame(栈帧)组成,对应每个未完成的函数调用,由系统分配。(VC调试中默认是会显示调用栈窗口的,越往栈顶的就是越最近调用的函数,黑色显示 [点击详细……]

No Picture

中轉inline hook,不需要恢複首字節的hook

2016年1月17日 shaohua 0

注:我實驗的環境:win7 x64 經驗證XP會有稍微區別,主要是我本次實驗HOOK的API, 從XP到WIN7微軟有了些許改變。 —————————————————————————————————————————————- 最近在看驅動教程時,從前人的HOOK得到啓發,才有了本篇文章,在此甚是感激。 文章估計有些長,當是我的學習筆記了,適合有一定HOOK基礎的盆友, 我寫這篇文章的目的就是爲了提高HOOK的效率。 本次我以HOOK GetProcAddr [点击详细……]

No Picture

Troubleshooting common VPN related errors

2016年1月17日 shaohua 0

Hello Customers, If you are seeing errors while establishing VPN connection using Windows in-built VPN client,  you have reached the right place. This article will help you to easily troubleshoot some of the common VPN related errors. 1) Error Code: 800 Error Description: The remote connection was not made because the attempted VPN tunnels failed. The VPN server might be unreachable. If this connection is attempting to use an L2TP/IPsec tunnel, the security parameters required for IPsec negotiat [点击详细……]

No Picture

图解:如何在Windows Azure上搭建SSTP VPN(你们懂的)

2016年1月17日 shaohua 0

原文地址: http://edi.wang/Post/2014/3/9/setup-sstp-windows-azure 需要注意的是: 证书的创建要用azure 域名中的名字, 在客户端导入证书到信任的根证书中。       在国内,VPN是用来干嘛的大家都懂的。很久之前我尝试用Azure的Virtual Network搞VPN结果惨败了。最近微博上有基友写了篇文章亲测可行,原文在这里。可惜是英文的。所以我的这篇文章仅仅是用原作者的步骤进行翻译和补充。 注意,本文的方法不适用于国内世纪互联运营的Windows Azure! 一、服务器设置 首先,从0开始,你需要创建一个新的VM。我选择Windows Server 2012 R2,所有步骤和创建普通VM都一样,但最后在防火墙设置里一定要打开TCP 443端口: 创建完成后,远程桌面进去,在自动弹出的“Server Management”里面点击“Add roles and features”,一路Next到“Server Roles”,然后勾选Remote Access。 再一路Next到“Role Se [点击详细……]

No Picture

利用反汇编手段解析C语言函数

2016年1月15日 shaohua 0

1、问题的提出 函数是 C语言中的重要概念。利用好函数能够充分利用系统库的功能写出模块独立、易于维护和修改的程序。函数并不是 C 语言独有的概念,其他语言中的方法、过程等本质上都是函数。可见函数在教学中的重要意义。在教学中一般采用画简单的堆栈图的方式描述函数调用,但由于学生对堆栈没有直观认识,难以深入理解,因此教学效果往往并不理想,从而限制了对模块化程序设计思想的理解和应用。 2、解决方法 在《微机原理》 课程介绍了堆栈、汇编语言等必要的相关知识之后,通过在高级语言开发环境下反汇编C 语言程序代码,使得学生通过分析汇编代码来理解函数调用中的堆栈变化,可以在实践中理解高级语言和低级语言的底层映射关系,理解函数调用的实质。本文通过在 Visual C++6.0 下反汇编一个 32 位 C语言程序的部分代码来解析解释函数调用的具体过程。 3、函数调用过程 函数调用过程主要由参数传递、地址跳转、局部变量分配和赋初值、执行函数体,结果返回等几个步骤组成[1]。 3.1、参数传递及函数跳转 参数由实参传递给形参。在底层实现上,即是实参按照函数调用规定压入堆栈。参数传递完成后就通过CALL指令由当前 [点击详细……]

No Picture

Windows API函数大全(完整)

2016年1月13日 shaohua 0

Windows API函数大全(完整) 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举 [点击详细……]

No Picture

Windows子窗口按钮类别—按钮和输入焦点

2016年1月13日 Administrator 0

我在本章前面已经提到过,当用鼠标单击按钮、复选框、单选框和拥有者绘制按钮时,它们接收到输入焦点。这些控件使用文字周围的虚线来表示它拥有了输入焦点。当子窗口控件得到输入焦点时,其父窗口就失去了输入焦点;所有的键盘输入都进入子窗口控件,而不会进入父窗口中。但是,子窗口控件只对Spacebar键作出回应,此时Spacebar键的作用就如同鼠标按键一样。这种情形导致了一个明显的问题:您的程序失去了对键盘处理的控件。让我们看看我们对此能做一些什么。 我在第六章中已经提到过,当Windows将输入焦点从一个窗口(例如一个父窗口)转换到另一个窗口(例如一个子窗口控件)时,它首先给正在失去输入焦点的窗口发送一个WM_KILLFOCUS消息,wParam参数是接收输入焦点的窗口的句柄。然后,Windows向正在接收输入焦点的窗口发送一个WM_SETFOCUS消息,同时wParam是还在失去输入焦点的窗口的句柄(在这两种情况中,wParam值可能为NULL,它表示没有窗口拥有或者正在接收输入焦点)。 通过处理WM_KILLFOCUS消息,父窗口可以阻止子窗口控件获得输入焦点。假定数组hwndChild包含 [点击详细……]

No Picture

后台窗口消息模拟实践

2016年1月13日 Administrator 0

一直对发送游戏后台窗口消息怀有极大的兴趣,折腾了好久,还是没有搞定。如今又陷入了迷茫了 从最初的调用系统的API 来向一个窗口发送消息。 到现在的修改系统API 地址的来调用自己的方法,去依然还是没能搞定发送后台的键盘消息。 拦截了,GetForegroundWinow, GetActiveWindow,GetCapture, GetFocus, GetInputState, GetGUIThreadInfo, GetCursorPos, GetKeyboardState, GetKeyState,GetAsyncKeyState. 却发现,鼠标的消息拦截成功了,可是键盘的消息还是没有搞定, 一定是还有什么函数没有拦截到。亦或是,游戏程序中绕过了系统的API, 直接调用到内核里去了。 无赖还得继续研究……

1 2