源码分享
CoBind - 拨通多个 ADSL 连接,大幅度提升网络速度
[
2009/08/31 17:15 | by Yonsm ]
2009/08/31 17:15 | by Yonsm ]
副题:在Windows Socket SPI 层实现客户端负载均衡
翻出2005年的帖子,发现在今天看来依然还是好有创意啊……
翻出2005年的帖子,发现在今天看来依然还是好有创意啊……
程序实现了轮番邦定RAS拨号连接IP地址。要使CoBind生效,必须先注册它,且必须先按亮ScrollLock键。
代码示例,演示了Windows Socket SPI的使用,仅供参考: CoBind 1.0.54.242
调用 UnRAR.dll 解压缩RAR文件
[
2008/12/28 00:35 | by Yonsm ]
2008/12/28 00:35 | by Yonsm ]
CeleCmd 中把 TGZ 的解压缩功能用 RAR 解压缩替换了,发现RAR解压缩的代码非常简单。
CeleLib:UniBase, CeleReg, CeleUtil, CeleCtrl 等基础函数库
[
2008/11/27 21:53 | by Yonsm ]
2008/11/27 21:53 | by Yonsm ]
把新近整理的基础代码整理一下,欢迎评估使用。
Thunk Window Class Demo
[
2007/09/10 23:41 | by Yonsm ]
2007/09/10 23:41 | by Yonsm ]
CeleCmd 1.2.360 代码
[
2007/08/04 23:31 | by Yonsm ]
2007/08/04 23:31 | by Yonsm ]
应该可以说非常精妙与高效,有兴趣不妨一观。其中有不少与Windows PC通用的代码,比如 Import 注册表脚本 Reg 文件的代码和利用ZLib解压缩Tar GZ压缩包的代码,实用性和适应性都非常好,写得也很简洁高效。
有关 CeleCommand 请参考:http://www.yonsm.net/read.php?329
有关 CeleCommand 请参考:http://www.yonsm.net/read.php?329
修改 psShutXP 使他的硬起功能生效
[
2007/06/25 03:18 | by Yonsm ]
2007/06/25 03:18 | by Yonsm ]
经验征得之,SetCleanRebootFlag 对于 HTC 系列的 PPC 无效。但一般的软件硬起,往往就用这个函数,psShutXP 也不例外。
我已经修改 psShutXP,让它的硬起功能真的“硬起”了。下面是分析 HTC ClearStorage 的关键代码(这很容易,但是要把这些代码挪动到 psShutXP 中,那不是一般的难啊——还好我搞定了:)。
我已经修改 psShutXP,让它的硬起功能真的“硬起”了。下面是分析 HTC ClearStorage 的关键代码(这很容易,但是要把这些代码挪动到 psShutXP 中,那不是一般的难啊——还好我搞定了:)。
CodeZap - 给 EXE 添加额外代码的 C++ Engine
[
2007/05/02 02:53 | by Yonsm ]
2007/05/02 02:53 | by Yonsm ]
给 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
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);
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 & function address
[
2007/04/28 21:08 | by Yonsm ]
2007/04/28 21:08 | by Yonsm ]
Search module base (e.g.KERNEL32) & function address (e.g. GetProcAddress) (C++, NOT ASM).
CeleSetup - ROM 定制扩展命令解释工具
[
2007/04/09 00:20 | by Yonsm ]
2007/04/09 00:20 | by Yonsm ]
欢迎使用 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。
◎ 下面是一般性用法:
一、特点
◎ 短小精干,运行迅速。
◎ 支持常规的扩展设置命令。
◎ 支持调用外部 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。
◎ 下面是一般性用法:
用 ZLib 解压缩 TAR GZ 的最简单的过程和代码
[
2007/04/01 21:47 | by Yonsm ]
2007/04/01 21:47 | by Yonsm ]
看代码,不多说,应该很简单,由于 ZLib 的可移植性,所以在 PC 和 Windows Mobile 下不加修改即可便已通过。
买了个蓝牙耳机,竟然不能把除了电话之外的普通音频切换到蓝牙而机上。分析了一个 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 的日志中下载。
:)
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 的日志中下载。
:)








