源码分享
副题:在Windows Socket SPI 层实现客户端负载均衡
翻出2005年的帖子,发现在今天看来依然还是好有创意啊……


程序实现了轮番邦定RAS拨号连接IP地址。要使CoBind生效,必须先注册它,且必须先按亮ScrollLock键。

代码示例,演示了Windows Socket SPI的使用,仅供参考: CoBind 1.0.54.242

Tags:

调用 UnRAR.dll 解压缩RAR文件

[不指定 2008/12/28 00:35 | by Yonsm ]
CeleCmd 中把 TGZ 的解压缩功能用 RAR 解压缩替换了,发现RAR解压缩的代码非常简单。
把新近整理的基础代码整理一下,欢迎评估使用。
Tags:

Thunk  Window Class Demo

[夜晚 2007/09/10 23:41 | by Yonsm ]
Generates __thiscall thunk to convert static funtion to member function.

Tags:

CeleCmd 1.2.360 代码

[不指定 2007/08/04 23:31 | by Yonsm ]
应该可以说非常精妙与高效,有兴趣不妨一观。其中有不少与Windows PC通用的代码,比如 Import 注册表脚本 Reg 文件的代码和利用ZLib解压缩Tar GZ压缩包的代码,实用性和适应性都非常好,写得也很简洁高效。

有关 CeleCommand 请参考:http://www.yonsm.net/read.php?329

Tags: ,
经验征得之,SetCleanRebootFlag 对于 HTC 系列的 PPC 无效。但一般的软件硬起,往往就用这个函数,psShutXP 也不例外。

我已经修改 psShutXP,让它的硬起功能真的“硬起”了。下面是分析 HTC ClearStorage 的关键代码(这很容易,但是要把这些代码挪动到 psShutXP 中,那不是一般的难啊——还好我搞定了:)。
给 EXE 添加节显示启动信息的代码多得很,CodeZap 这个最大的特色就是 C++ 写成的,且提供了比较独立美观的Z函数。只要了解 C/C++ 语言,就能写添加大量的代码,完全可以工程化操作。

CodeZap 简要说明

CodeZap 是用来给 PE 文件添加额外代码的 C++ SDK。您可以通过使用熟悉而且容易工程化的 C/C++ 语言来添加大量的可执行代码。

Codez 使用非常简单,你只要模仿 ZCode 函数,写出自己的 ZCode 即可。其中 ZCode 的要求如下:

1. ZCode 必须是 CDECL 调用规范。
2. ZCode 函数最后的 __asm 块,除 #ifdef _DEBUG 包围的之外,必须保留。
3. ZCode 中不能使用字符串常量。
4. ZCode 中不能调用外部函数。
5. ZCode 中可以调用 __forceinline 声明的函数。
6. ZCode 中可以使用 CodeZap 中所有 Z 开头的函数。
7. ZCode 中的 C++ 代码可以任意添加,只要符合前面的所有条件。
8. 可以修改  #ifdef _DEBUG 中的汇编代码为你所所要情形。
9. 可以修改函数的参数(基于上一条为前提)。


基于以上要求, Viual Studio 2003/2005 中使用,必须在 Project 设置中,关闭缓冲区安全检查。否则将会生成的代码中会调用 security_cookie 函数,导致代码无法在目标文件中正确执行。

另外,用这些Z函数来写 ShellCode,也是非常高效的,比平时写 C/C++ 程序麻烦一点点而已。


CodeZap 调用示例:
CodeZap(TEXT("C:\\ABC.CZ.exe"), TEXT("C:\\ABC.exe"), (PBYTE) ZCode);

Powered By Yonsm
WWW.Yonsm.NET
2007.4.31

接口函数:
BOOL CodeZap(PCTSTR ptzDst, PCTSTR ptzSrc, PBYTE pbCode);
ZAPI HMODULE ZGetKernelHandle();
ZAPI HMODULE ZGetModuleHandle(PCTSTR ptzModule = NULL);
ZAPI HMODULE ZSearchModuleHandle(PCTSTR ptzModule, PBYTE pbBase = (PBYTE) 0x70000000, PBYTE pbMax = (PBYTE) 0x80000000);
ZAPI FARPROC ZGetProcAddress(HMODULE hModule, PCTSTR ptzProc);

Search module base (e.g.KERNEL32) & function address (e.g. GetProcAddress) (C++, NOT ASM).
Tags:
欢迎使用 CeleSetup,它将使你能够轻松愉快地定制 Windows Mobile ROM,使您的 ROM 具备最好的扩充性和伸缩性!

一、特点

◎ 短小精干,运行迅速。
◎ 支持常规的扩展设置命令。
◎ 支持调用外部 EXE 和 DLL 函数。
◎ 支持格式统一的命令行参数和命令文件。
◎ 细微周到的功能支持。功能及其强大。
◎ 源代码公开,方便更改定制。在源代码中增加扩展命令非常容易。

二、使用

◎ 本程序与 XCMD(专为 Windows XPE 而作,详细请看 bbs.wuyou.com 论坛) 具有类似的命令格式和功能,但 CeleSetup 只是为 Windows Mobile 初始化设置为专门做的,可以方便地 ROM 初始化当中的各种操作。

◎ 使用命令行参数:例如,要创建快捷方式,执行“CeleSetup.exe LINK %S\程序\测试程序.lnk,%W\Test.exe”即可。

◎ 使用命令文件:例如,“CeleSetup.exe LOAD \Storage Card\*.cst”。

◎ 不用命令行参数,直接执行本程序,将显示版本信息。

◎ 命令参数支持宏替换(如“%W\X.TXT”);命令不区分大小写;尖括号“<>”内的参数表示必须输入,方括号“[]”内的表示可以省略。

◎ 命令文件中,支持以下宏替换(如果需要在参数中使用 % 本身,则需要用两个 % 代替,如 %1 要写成 %%1):

   %A=APPDATA,可能为 \Application Data
   %D=DESKTOP,可能为 \Windows\Desktop
   %M=PERSONAL,可能为 \My Documents
   %U=STARTUP,可能是 \Windows\StartUp
   %W=WINDOWS,可能是 \Windows
   %P=PROGRAMS,可能是 \Windwos\程序
   %S=STARTMENU,可能是 \WIndows\“开始”菜单
   %F=PROGRAM FILES 可能是 \Program Files
   %C=在命令文件中使用,表示命令文件所在的目录;在命令行中使用,表示 CeleSetup 所在目录

◎ 具体用法可以参考 Sample 中的 csx 文件,也可以参考我定制的最帅的 Prophet WM5 ROM:http://www.yonsm.net/read.php?302

◎ 下面是一般性用法:
Tags: , ,
看代码,不多说,应该很简单,由于 ZLib 的可移植性,所以在 PC 和 Windows Mobile 下不加修改即可便已通过。
Tags:

切换音频到蓝牙耳机

[晴 2007/01/30 14:07 | by Yonsm ]
买了个蓝牙耳机,竟然不能把除了电话之外的普通音频切换到蓝牙而机上。分析了一个 BTAudoToggle.exe 的代码,很快搞定。代码如下:

    HANDLE hFile;
    hFile = CreateFile(TEXT("BAG0:"), 0, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
    if (hFile != INVALID_HANDLE_VALUE)
    {
      g_pMain->m_uFlag ^= VF_BTAudio;
      DeviceIoControl(hFile, (g_pMain->m_uFlag & VF_BTAudio) ? 1 : 2, NULL, 0, NULL, 0, NULL, NULL);
      CloseHandle(hFile);
    }
    else
    {
      g_pMain->ErrorBox(IDM_Utility_BTAudio);
    }


已整合到最新的 CeleTask 2.2 RAR 版本内,命令 ID 是 1055。要的话可以到 CeleTask 的日志中下载。

:)
Tags: , ,

Another way to hook/modify API

[夜晚 2006/12/29 23:46 | by Yonsm ]
分页: 1/4 第一页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]