查看文章 |
破解Widcomm蓝牙软件
2008-12-22 20:33
破解Widcomm蓝牙软件 tombkeeper@xfocus,http://hi.baidu.com/tombkeeper 2005.08.13 我邮购了几个二手蓝牙设备,这些设备都是正经厂商生产的,原本都配了Widcomm BTW软件。因为光盘是不能邮寄的,所以我就无法拿到随设备的原厂光盘。出于可以理解的原因,我拒绝了卖主把软件通过网络发给我的建议。 Widcomm的BTW是专门提供给蓝牙设备生产厂商的,在软件中内置了对蓝牙设备硬件地址的限制。譬如说,你买了一个XXX厂生产的蓝牙,安装了产品光盘中的BTW软件。然后又买了一个YYY厂生产的蓝牙,产品光盘里也是BTW软件。但是你发现XXX的BTW并不能让你的YYY蓝牙工作。为了让YYY蓝牙工作,你就又装了YYY光盘里的BTW。好,现在YYY蓝牙工作了,可是XXX蓝牙又不能用了。也就是说,如果你有两个不同厂商的蓝牙设备,别指望用一份BTW让它们工作——你必须不停地装来装去。 作为一个合法用户却要遭受这份憋屈是不对的。 随便到哪个厂商的页面上下载一份BTW软件,安装。以惠普为例吧,最新的版本3系列BTW是SP28427.exe(BTW 3.0.1.905),最新的版本1系列BTW是SP26005.exe(1.4.3 Build 3)。可以在惠普的网站上下载到: http://chn.download.software.hp.com/pub/softlib/software4/COL5274/ob-24183-1/SP28427.exe http://chn.download.software.hp.com/pub/softlib/software3/COL5274/ob-19925-1/SP26005.exe 在BTTray.exe、BTStackServer.exe、wbtapi.dll三个文件中,都有一段明显是从同一个C文件编译而来的代码,专门用于处理蓝牙设备地址不在许可证范围内的问题。用最简单的的拦截MessageBox-->调用回溯的办法就可以找到这段代码。 在安装目录下可以找到BTTray.exe和BTStackServer.exe,在系统目录下可以找到wbtapi.dll。在这三个文件中搜索0F 85 EF 00 00 00,找到后修改为90 90 90 90 90 90。其中BTStackServer.exe中可以找到三处,改最后一处。 sub_10040C60 proc near lpCaption = dword ptr -0C4h lpText = dword ptr -0C0h hKey = HKEY__ ptr -0BCh var_A0 = byte ptr -0A0h var_98 = dword ptr -98h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = byte ptr 0Ch mov eax, large fs:0 push 0FFFFFFFFh push offset loc_10049466 push eax mov large fs:0, esp sub esp, 0B8h push esi push edi mov edi, [esp+0CCh+arg_0] test edi, 0FFFFFFFh jnz short loc_10040CA8 pop edi mov eax, 4 pop esi mov ecx, [esp+0C4h+var_C] mov large fs:0, ecx add esp, 0C4h retn ; ------------------------------------------------------------------------- loc_10040CA8: lea eax, [esp+0CCh+hKey] push eax ; hKey call sub_10041610 mov esi, eax add esp, 4 test esi, esi jnz loc_10040DC6 lea ecx, [esp+0CCh+hKey] push eax push ecx call sub_1003F640 mov esi, eax add esp, 8 test esi, esi jnz loc_10040DC6 call sub_1003F680 mov esi, eax cmp esi, 0FFFFFE9Eh jnz loc_10040DC6 mov eax, [esp+0CCh+var_98] xor esi, esi test eax, edi jz loc_10040DCB mov al, [esp+0CCh+arg_8] test al, al jz loc_10040D9D mov al, [esp+0CCh+var_A0] cmp al, 1 jz short loc_10040D17 cmp al, 2 jnz loc_10040D9D loc_10040D17: call sub_10041360 test al, al jz short loc_10040D9D lea ecx, [esp+0CCh+lpCaption] call CString::CString(void) lea ecx, [esp+0CCh+lpText] mov [esp+0CCh+var_4], 0 call CString::CString(void) lea edx, [esp+0CCh+hKey] lea eax, [esp+0CCh+lpText] push edx lea ecx, [esp+0D0h+lpCaption] push eax push ecx mov byte ptr [esp+0D8h+var_4], 1 call sub_10041160 add esp, 0Ch call ds:GetDesktopWindow mov edx, [esp+0CCh+lpCaption] mov ecx, [esp+0CCh+lpText] push 50000h ; uType push edx ; lpCaption push ecx ; lpText push eax ; hWnd call ds:MessageBoxA lea ecx, [esp+0CCh+lpText] mov byte ptr [esp+0CCh+var_4], 0 call CString::~CString(void) lea ecx, [esp+0CCh+lpCaption] mov [esp+0CCh+var_4], 0FFFFFFFFh call CString::~CString(void) loc_10040D9D: lea edx, [esp+0CCh+hKey] push edx ; hKey call sub_10040360 add esp, 4 mov eax, 0FFFFFE9Eh pop edi pop esi mov ecx, [esp+0C4h+var_C] mov large fs:0, ecx add esp, 0C4h retn ; ------------------------------------------------------------------------- loc_10040DC6: cmp esi, 2 jz short loc_10040DD8 loc_10040DCB: lea eax, [esp+0CCh+hKey] push eax ; hKey call sub_10040360 add esp, 4 loc_10040DD8: test esi, esi jz short loc_10040E54 cmp esi, 7 jz short loc_10040E54 mov al, [esp+0CCh+arg_4] test al, al jz short loc_10040E54 push esi call sub_10040640 add esp, 4 call sub_10040E70 mov esi, eax test esi, esi jnz short loc_10040E54 lea ecx, [esp+0CCh+hKey] push ecx ; hKey call sub_10041610 add esp, 4 test eax, eax jnz short loc_10040E56 lea edx, [esp+0CCh+hKey] push eax push edx call sub_1003F640 mov esi, eax add esp, 8 test esi, esi jnz short loc_10040E54 test [esp+0CCh+var_98], edi jz short loc_10040E54 lea eax, [esp+0CCh+hKey] push eax ; hKey call sub_10040360 add esp, 4 mov eax, 0FFFFFE9Eh pop edi pop esi mov ecx, [esp+0C4h+var_C] mov large fs:0, ecx add esp, 0C4h retn ; ------------------------------------------------------------------------- loc_10040E54: mov eax, esi loc_10040E56: mov ecx, [esp+0CCh+var_C] pop edi pop esi mov large fs:0, ecx add esp, 0C4h retn sub_10040C60 endp |
类别:技术探索 research
| 浏览()
| 评论 (2)