
Reverse Engineering
文章平均质量分 76
keyssoft
这个作者很懒,什么都没留下…
展开
-
【IDA】为何 pdg2 v3.8 控件的 CopyToClipBoard 方法存在限制
网上流传着使用 pdg2 控件 IT_Pdg01 接口 CopyToClipBoard 方法将 .pdg 文件转换为图片的方法,不少读者在根据该方法进行实践的时候发现调用 v3.8 及以后版本控件的 CopyToClipBoard 方法是无效的。笔者通过使用 IDA Pro 对 v3.8 控件反向工程,发现只有调用了 LocateRect 方法后,才能使 CopyToClipBoard 方法有原创 2007-07-02 22:10:00 · 1763 阅读 · 1 评论 -
【WM】如何获取Exe文件的进程ID
我们在编程时,或许想知道给定Exe文件是否正在运行?如果正在运行,那么他的进程ID是多少?Win32 API函数GetExeProcessId()就能帮你实现这个目的。 该函数的原型声明位于miscsvsc.h内:HRESULT GetExeProcessId(LPTSTR pszExeFile, DWORD* pdwProcID); 要使用该函数需要链接ossvcs.lib。原创 2010-05-01 16:20:00 · 1665 阅读 · 0 评论 -
【WM】如何递归创建目录
在Windows Mobile上调用CreateDirectory()函数只能创建路径中的最后的目录,不能递规创建目录。如果任意父目录或中间目录不存在,CreateDirectory()函数会返回FALSE,调用GetLastError()函数返回错误号ERROR_PATH_NOT_FOUND。而我们在工作中经常需要递归创建目录,因此,笔者在这里介绍一个能够递归创建目录的Win32 API函数Cr原创 2010-04-26 20:01:00 · 1384 阅读 · 0 评论 -
【WM】如何判断给定窗口是否是电话应用窗口
这里所指的电话应用窗口是指由cprog.exe的UI线程创建的窗口,除了大家在平时能够看见的alert(来电)、progress(通话过程)、dialer(拨号盘)等对话框外,cprog.exe还注册三个不可见的窗口类:MSCprog、MSScut和MSClog。这3个窗口类很具有特征意义,通过类名可以很容易地区分出来。而alert(来电)、progress(通话过程)、dialer(拨号盘)等对原创 2010-04-23 21:48:00 · 768 阅读 · 0 评论 -
【WM】如何判断两个窗口是否由同一进程创建
在我们的代码中,可能要判断某个窗口是否由shell32、cprog、tmail或connmgr进程创建的。由于这几个进程都会创建数个很具有特征意义的窗口,比如:shell32进程会创建DesktopExplorerWindow和HHTaskBar等窗口,故这个问题就可简化为判断两个窗口是否由同一进程创建。 在头文件wpcpriv.h中,存在未归档Win32 API函数SHSameWindowP原创 2010-04-22 20:21:00 · 1600 阅读 · 0 评论 -
【WM】工作窗口类原理和实现
通过Remote Spy我们常能见到类名为Worker的窗口(如下图所示),那么工作窗口类是什么呢?其实工作窗口与常规窗口十分相似,只不过我们无需调用RegisterClass()函数注册窗口类,并把我们传入的p参数作为窗口的额外数据保存了起来。想来微软青睐这类不可见的窗口也就是为了简化步骤,提高效率而已。 我们先来看看如何创建工作窗口的。在头文件miscsvcs.h内有CreateW原创 2010-04-19 21:25:00 · 917 阅读 · 0 评论 -
【WM】如何判断进程能否被终止(freeable)
我们在编写程序时,可能会碰到类似Task Killer方面的需求,要求我们在设备资源不足的情况下,终止部分不重要或资源占用较多的进程。但在Windows Mobile 6.1及后续版本上有数个进程是不允许被终止的,一旦某个进程被终止通常会导致OS不稳定或某些重要功能丧失。目前为止,共有7个进程,分别是:nk.exe、filesys.exe、device.exe、gwes.exe、services.原创 2010-04-19 12:21:00 · 1060 阅读 · 0 评论 -
【WM】谈注册表通告功能StatStore响应较慢的原因
StatStore被State and Notifications Broker替换也有些年头了,StatStore也和State and Notifications Broker一样提供了注册表访问、上报键值改动的能力,以前也没体会出替换的必要性。但最近在维护一个旧程序时,发现对同一键值的修改,通过IStatStore::RegisterForNotifications和RegistryNot原创 2009-11-23 14:16:00 · 686 阅读 · 0 评论 -
【WM】谈Phone Canvas函数为何不会返回错误值RPC_E_WRONG_THREAD
微软向OEM厂商提供Phone Canvas机制,让我们可以修改cprog.exe的数个界面布局和UI交互行为。我们发现多数Phone Canvas API函数的返回值列表中都存在错误值RPC_E_WRONG_THREAD,下表就是PHGetBlobPtr的返回值列表: S_OKIndicates success. E_INVALID原创 2009-08-30 11:31:00 · 1690 阅读 · 1 评论 -
【IDA】分析 Windows CE 事件日志服务(一)
笔者在开始使用 Windows CE 事件日志服务时,由于自身条件限制未能获得 Microsoft 的技术支持,故只能使用 IDA Pro 对 eventlog.dll 进行分析。笔者感觉事件日志服务相关的注册表设置可能对嵌入式系统软件工程师比较有用,所以注重分析 StartAllLoggers、InitFormattersAndOutputters、CLogEventLog::Initial原创 2007-08-18 02:50:00 · 1679 阅读 · 0 评论 -
【WM】Phone Canvas重复创建视图的原因
记得08年刚做可视电话模块的时候,我们被Phone Canvas函数不返回RPC_E_WRONG_THREAD现象所迷惑,在H.324协议栈线程内调用了Phone Canvas函数导致cprog.exe创建了两个Progress View。结果两个Progress View交替显示,状态那叫一个混乱哟!解决这个问题的方法,笔者已在《【WM】谈Phone Canvas函数为何不会返回错误值RPC原创 2010-05-23 14:58:00 · 639 阅读 · 0 评论