记个笔记

来源:互联网 发布:php goto 编辑:程序博客网 时间:2024/06/11 10:55

本来打算认认真真地弄点东西,但是可能是白天认真过头了,晚上吃晚饭怎么也踏实不下来了。

明天有空时候继续弄吧。

上周周末就自己瞎钻实验了一下WriteProcessMemory()这个API函数,直接能跨进程修改内存内容。

今天又用上了一编,印象深刻了点吧,记录几个常用的API用法。

 

 

FindWindow()可以根据窗口类的className或者是窗口顶上的名称这两个任意条件来找当前的窗口,

返回值是HWND类型的。

 

根据这个HWND可以找到进程的句柄。

用OpenProcess()这个函数。第一个参数写成PROCESS_ALL_ACCESS,就可以对这个窗口所对应的进程随意读写了。

这个函数通常写作

g_hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcId);

这样就拿到了HANDLE类型的 hProcess句柄。

 

还有一个,就是现在的WINDOWS操作系统在用OpenProcess()拿进程句柄前,都要提权的。

提权的函数摆在这里,做个备忘:

 

// 提升权限

BOOL EnableDebugPriv()
{
 HANDLE hToken;
 LUID sedebugnameValue;
 TOKEN_PRIVILEGES tkp;

 if ( ! OpenProcessToken( GetCurrentProcess(),
  TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
  return false;

 if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) )
 {
  CloseHandle( hToken );
  return false;
 }

 tkp.PrivilegeCount = 1;
 tkp.Privileges[0].Luid = sedebugnameValue;
 tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

 if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
  CloseHandle( hToken );

 return true;
}

CSDN博客上怎么插代码我一直没找到饿。。。。时间比较紧,就这么贴上吧。

这个提权的代码一直也没仔细看过,没明白是什么意思什么原理,就知道把这个函数一COPY,直接就能用了~

 

 

最后再随便总结两句聊两句:

Windows API实在太厉害了,根据API暴露的接口,能够干好多好多的好事坏事啊,也能实现许许多多以前觉得很神奇的功能。

 

越学习这个东西,越觉得开发WINDOWS的程序员太天才了,这个操作系统神奇之处先放一边,

光把暴露出来的这么多API用好,实现一个又一个井然有序的功能,就已经能体现他们强大的功力了。

 

他们自己开发的程序暴露出来的接口,编程别的程序员要去学习的知识,这帮人真是太牛了。

 

今天才知道,《windows程序设计》不是只有Charles Petzold一版,中国也有本国产的《windows程序设计》,而且似乎写的还不错。

国产这本似乎讲述了更多的API细节和更高级功能的API,想做坏事的同学看看这本书,一定能受益匪浅~

 

 

之前做了个钩子的键盘记录小程序,能勉勉强强地盗个密码了,有点成就感,但其实就是用了个钩子,没啥新鲜的;

前两天又试验了1下模拟键盘鼠标消息,可以轻松实现warkey啊按键精灵啊这些软件的功能;

今天稍微弄了弄,觉得游戏修改器这东西也不过如此,再使劲1把估计也就出来了。

 

估计要是把2本《windows程序设计》和1本《windows核心编程》全都搞明白,真就无了敌了。

 

可是自己一直没接触过汇编。真不知道以前看雪论坛那帮牛人又是汇编,又是windows api的,到底在干啥?

这帮牛人,做个外挂啥的估计对他们都是小CASE,毁灭地球对他们来说才有挑战…………

 

 

今天就到这把。去接最最懂事最最乖最最可爱的小静静下课~

那个啥,说实话,媳妇提醒我应该看看IPHONE了,真是多亏她的提醒了。

明天可得把时间分配好了,别干自己事情干的太HIGH,忘了自己是要做IPHONE开发的……