WiMAX MAC管理消息

Type     Message name     Message description     Connection
0     UCD     Uplink Channel Descriptor     Broadcast Fragmentable Broadcast
1     DCD     Downlink Channel Descriptor     Broadcast Fragmentable Broadcast
2     DL-MAP     Downlink Access Definition     Broadcast
3     UL-MAP     Uplink Access Definition     Broadcast
4     RNG-REQ     Ranging Request     Initial Ranging or Basic
5     RNG-RSP     Ranging Response     Initial Ranging or Basic
6     REG-REQ     Registration Request     Primary Management
7     REG-RSP     Registration Response     Primary Management
8     —     Reserved     —
9     PKM-REQ     Privacy Key Management Request     Primary Management
10     PKM-RSP     Privacy Key Management Response     Primary Management or Broadcast a
11     DSA-REQ     Dynamic Service Addition Request     Primary Management
12     DSA-RSP     Dynamic Service Addition Response     Primary Management
13     DSA-ACK     Dynamic Service Addition Acknowledge     Primary Management
14     DSC-REQ     Dynamic Service Change Request     Primary Management
15     DSC-RSP     Dynamic Service Change Response     Primary Management
16     DSC-ACK     Dynamic Service Change Acknowledge     Primary Management
17     DSD-REQ     Dynamic Service Deletion Request     Primary Management
18     DSD-RSP     Dynamic Service Deletion Response     Primary Management
19     —     Reserved     —
20     —     Reserved     —
21     MCA-REQ     Multicast Assignment Request     Primary Management
22     MCA-RSP     Multicast Assignment Response     Primary Management
23     DBPC-REQ     Downlink Burst Profile Change Request     Basic
24     DBPC-RSP     Downlink Burst Profile Change Response     Basic
25     RES-CMD     Reset Command     Basic
26     SBC-REQ     SS Basic Capability Request     Basic
27     SBC-RSP     SS Basic Capability Response     Basic
28     CLK-CMP     SS network clock comparison     Broadcast
29     DREG-CMD     De/Re-register Command     Basic
30     DSX-RVD     DSx Received Message     Primary Management
31     TFTP-CPLT     Config File TFTP Complete Message     Primary Management
32     TFTP-RSP     Config File TFTP Complete Response     Primary Management
33     ARQ-Feedback     Standalone ARQ Feedback     Basic
34     ARQ-Discard     ARQ Discard message     Basic
35     ARQ-Reset     ARQ Reset message     Basic
36     REP-REQ     Channel measurement Report Request     Basic
37     REP-RSP     Channel measurement Report Response     Basic
38     FPC     Fast Power Control     Broadcast
39     MSH-NCFG     Mesh Network Configuration     Broadcast
40     MSH-NENT     Mesh Network Entry     Basic
41     MSH-DSCH     Mesh Distributed Schedule     Broadcast
42     MSH-CSCH     Mesh Centralized Schedule     Broadcast
43     MSH-CSCF     Mesh Centralized Schedule Configuration     Broadcast
44     AAS-FBCK-REQ     AAS Feedback Request     Basic
45     AAS-FBCK-RSP     AAS Feedback Response     Basic
46     AAS_Beam_Select     AAS Beam Select message     Basic
47     AAS_BEAM_REQ     AAS Beam Request message     Basic
48     AAS_BEAM_RSP     AAS Beam Response message     Basic
49     DREG-REQ     SS De-registration message     Basic
50     MOB_SLP-REQ     sleep request message     basic
51     MOB_SLP-RSP     sleep response message     basic
52     MOB_TRF-IND     traffic indication message     broadcast
53     MOB_NBR-ADV     neighbor advertisement message     broadcast, primary management
54     MOB_SCN-REQ     scanning interval allocation request     basic
55     MOB_SCN-RSP     scanning interval allocation response     basic
56     MOB_BSHO-REQ     BS HO request message     basic
57     MOB_MSHO-REQ     MS HO request message     basic
58     MOB_BSHO-RSP     BS HO response message     basic
59     MOB_HO-IND     HO indication message     basic
60     MOB_SCN-REP     Scanning result report message     primary management
61     MOB_PAG-ADV     BS broadcast paging message     broadcast
62     MBS_MAP     MBS MAP message     —
63     PMC_REQ     Power control mode change request message     Basic
64     PMC_RSP     Power control mode change response message     Basic
65     PRC-LT-CTRL     Setup/Tear-down of long-term MIMO precoding     Basic
66     MOB_ASC-REP     Association result report message     primary management
67–255         Reserved     —

Tags:

win7不能拖动图标附加到状态栏的问题

就跟以前的快捷启动一样,下面可以放一排常驻状态栏的图标。但是后来发现无法拖动图标附加到状态栏了。

遇到这个问题的原因是因为自己把 HKEY_CLASSES_ROOT\lnkfile\IsShortCut 删除了。这个键是控制桌面快捷方式是否显示小箭头的。自己手工建回来,就可以拖动图标附加到状态栏了。一切搞好后,就可以把它重新删除了。

注意,修改了这个键后需要重启explorer.exe。

还有就是状态栏快捷方式的图标修改,这个你在图标上面点右键,快捷方式上面再右键属性,更改图标里面可以修改。修改好后,同样重启explorer.exe生效。注意:这个时候HKEY_CLASSES_ROOT\lnkfile\IsShortCut 还不能删除。

Tags:

才发现原来firefox有tineye的插件

什么是tineye?它是一个图片搜索网站,http://tineye.com,上传一张图片,就能搜出与它相似度非常大的图。比如你只有一张小图,想要大图,可以用它来搜一搜。我经常用它来搜美女套图,拿着一张图上传后搜一把,找出有这个图的很多网站,一个个浏览来找套图。

tineye有时候我也用来找桌面,比如看到一个桌面,找不到非常干净的版本,要么是有水印,要么只是新闻里面的小图片,用来搜一把,找出干净的大图。关于这个我以前写过一篇日志:下载桌面壁纸的好地方

不过呢,以前用tineye,每次都是把图片下载下来后上传去搜。tineye也支持直接输入url,他来下那个图。今天发现了一个firefox的插件,直接在附加组件里输入tineye就能搜到。有了这个插件,你用firefox看网页的时候,在图片上直接右键单击,就能看到菜单项了,点击一下,直接打开tineye搜这张图。

Tags: firefox,tineye,插件

windows media player 11不能播放http、mms流媒体的解决办法

用windows media encoder 9.0架了一个频道,然后到自己电脑上来测试居然,http://ip:port居然显示无法播放。按理不应该呀,ip能ping通,port也是开放的。让别人帮忙试了一下,windows media player 9是可以正常打开播放的。

看来问题出在我的windows media player 11上。网上搜了一下排在前5个结果里的网页都是提供的一个方法“把media player 11删除重装低版本”。难道真的没有办法了?要是得删除那也太郁闷了吧。网上之所以说必须得删除,是因为说media player 11抛弃了mms协议,都不支持协议了那还搞什么呀。但是以前搞infotv的时候我发现mms与http是通用的。比如网上直播电视mms://ip:port/channel这样子的,可以直接在windows media server里发布远程数据源,数据源的URL可以使用http://ip:port/channel代替。

找啊找,发现在选项->网络里有一个配置项,在不支持mms时使用rtsp或者http代替,那说明一般情况下应该是可以播放的。那为什么我放不了呢。再看下面发现我的rtsp代理服务器是无,而http的代理服务器项是“使用浏览器设置”。而我的浏览器根本没有设置代理服务器,难道是这个问题?于是修改一下,选成HTTP也不需要代理。再打开一下URL,可以播放了。

遇到相同问题的朋友:1、把mms的替代方案,最少要勾选http; 2、如果浏览器没有设置代理,把http代理设置成无

options.jpg

Tags:

某视频修复软件的注册验证算法

本文只是自己自娱自乐,研究一下反向工程,非用于商业用途。

昨天看电影遇到点问题,找了某视频修复软件来修复,但是不注册的话修复的视频不完整。

于是自己来试一下能否注册成功把电影修复一下。打开OllyDBG从GetDlgItem下断点,获取用户名和注册码一路开始跟,发现从得到注册数据,到弹出注册失败的框,走过三个大函数,进一步跟进,发现这三个大函数里又一直在调用小函数,而且好像在里面打转,而不是直接开始验证然后报错。

有点疑惑的是,寄存器中有注册码和用户名的值,进入一个call后返回这些值就没了。感觉这里应该是验证的地方了吧。结果发现进入F7进入此call,还没走两步,寄存器指向的地址换了,之后好像也没有把这个注册信息再调出来用过。还真把人搞糊涂了,一时无法确定是在什么地方进行注册校验呀,怎么跟算法或者做内存注册机呢?

无奈只好看看字符串参考,看看报注册失败的地方在哪里,结果失败的字没找着,发现了一个注册表的键值。于是打开看了看,发现里面有机器码,有用户名,就是没有存注册码。如果是这样,那软件启动的时候怎么校验是否注册了?先不管了,先把默认的“***”用户名改成我自己的再说。结果再启动软件点击注册,显示“已成功注册,感谢支持正版”。

感觉好像顺序有点混乱,按理应该上来先用regmon,filemon监视一遍才是,如果早发现注册表上是突破口,马上就能来到相关代码的部分了。这不由得让我想起以前破解过的某美容软件。对于用户输入的无效注册码也会存入注册表,然后启动的时候读取出来进行校验。因此安装完成后导入一个注册表键值,让软件把它读出来与验证码进行比对,在这里就可以直接用内存注册机取正确的注册码了。

Tags: OllyDBG,破解

推荐一个免费空间的软件DropBox

今天搜问题时看到有人推荐这个,使用了一下,发现相当不错,也写篇日志推荐一下。

免费空间的网盘很多人用过,但是呢都是要自己上传下载,比较麻烦。

这个DropBox客户端安装后可以选一个本地文件夹,比如My Documents下放一个My DropBox文件夹,把这个设置成自己的DropBox目录,然后设置系统自启动DropBox就行了。他会一直监视这个目录下文件的更新,自动上传到网盘里去。其他地方也会自动同步下载下来,相当方便。

免费用户有2G空间,应该是够用了。

有了本地文件夹的自动同步,用起cyberarticle和onenote就方便多了,呵呵。而且这两个软件都可以设置自动备份,在本地其他地方设置备份路径,一天备份一次。哪天DropBox不能用了也不用担心资料全丢失了。目前客户端的版本还是0.6.557,也不知道他这个服务出了多久了,所以目前免费用的时候,还是要自己备份一下,以防万一。

除了本地文件夹自动同步,你还可以把一些文件夹设置成共享,给个URL别人就能直接看。如果在其他电脑上只是想把某些文件上传下载,可以不用安装DropBox的客户端,可以直接用WEB操作下载,灰常方便。

Tags:

某软件水印去除的破解记录

免责声明:本文所述只为研究逆向工程技术,去水印后的软件并非用于商业用途。

某软件的Demo Version,所有功能都可以用,但是制作出的图上面全有一个水印,目标就是去掉水印。P.S.这软件是行业内的专业软件,找不到正式版下载,不然可以尝试一下使用用户名密码注册破解。

第一阶段:简单的替换方法(无效)

先查壳,没有。那么去水印最简单的办法就是用winhex把这个水印字符串用00填充。搜了一把,无果。filemon监视一下所有调用的DLL,去除系统和VC RUNTIME的,其他的搜了一把,无果。

于是想到查内存,果然打开一个图像后,该水印字符串在内存中出现了。清空后来图像上的水印字符串就没有了,估计是一个解密函数把一段什么字解密成版权然后画上去的。这是一个MDI程序,发现每开一个新窗口就会多一版水印字符串。那我想就偷点懒吧,只开一个窗口,用完就关掉,再开一个窗口。这样处理一处内存就OK了。

于是开始写代码,写了一个查找进程,把那段内存中的内容取出来清空然后覆盖回去。

cpp代码
  1. HANDLE handle =  OpenProcess( PROCESS_ALL_ACCESS, FALSE, programHandle );  
  2. //这里可能会出现error 5 拒绝访问的问题  
  3. //解决方法是给自己进程的Token授权  
  4.  
  5. if( handle == NULL )  
  6. {  
  7.     printError( "OpenProcess" );  
  8.     return 0;  
  9. }  
  10.  
  11. SIZE_T dwHaveRead;  
  12. SIZE_T dwWantRead = 18;     
  13. LPVOID lpBuf = new char[dwWantRead];     
  14. bool ret =ReadProcessMemory(handle,     
  15.     (LPCVOID)0x0178CB20,//基址  
  16.     lpBuf,  
  17.     dwWantRead,  
  18.     &dwHaveRead);    
  19. if(!ret)  
  20. {     
  21.     printError( "ReadProcessMemory Error" );//出错处理;     
  22. }  
  23. else 
  24. {  
  25.     //printf("Got: %s\r\n",lpBuf);            
  26.     memset(lpBuf, 0, dwHaveRead);//修改数据lpbuf  
  27.       
  28.     SIZE_T dwHaveWrite;  
  29.     SIZE_T dwWantWrite= dwWantRead;  
  30.     ret = WriteProcessMemory(handle,     
  31.         (LPVOID)0x0178CB20,//基址     
  32.         lpBuf,     
  33.         dwWantWrite,     
  34.         &dwHaveWrite);    
  35.     if(!ret)     
  36.     {     
  37.         printError( "WriteProcessMemory Error" );//出错处理;     
  38.     }  
  39. }  
  40. delete []lpBuf;     
  41. CloseHandle(handle);  

这个基址是用winhex查看内存,水印字符串所在地址。写好跑一把,不错,水印字符串没了。

关掉程序再打开,再跑一把这段代码,,发现水印还在。继续用winhex看,基址变了,除非进内存进行分页查找,每次都找到有效的基址,不然这段代码根本就没用呀。

第二阶段:OllyDBG调试(接近目标)

看来简单的替换办法是行不通了,得从程序本身入手。用OllyDBG加载后,把所有GDI32里面与加载文件并画图的相关函数全下断点,其他什么Get、Set一些东西的就不用管了。立即就来到目标地点,往下走那么几行,就发现了三处相似代码。

汇编代码
  1. 004B768E  |.  FF15 B01F6200 call    dword ptr [<&MFC80.#876>]        ;  MFC80.781F3AEB  
  2. 004B7694  |.  50            push    eax  
  3. 004B7695  |.  8B45 00       mov     eax, dword ptr [ebp]  
  4. 004B7698  |.  8D4C24 48     lea     ecx, dword ptr [esp+48]  
  5. 004B769C  |.  FFD0          call    eax   

这个call继续后,eax寄存器就是水印信息了,于是重新开始到这里跟进到call里面。只有两行内容

汇编代码
  1. 781F3AEB    8B01            mov     eax, dword ptr [ecx]  
  2. 781F3AED    C3              retn 

看下面的内容窗口,哈哈,原来真的是我要找的东西哦

xhtml代码
  1. ds:[01770D24]=0178CA90, (ASCII "***** DEMO version")  
  2. eax=00000012 

用winhex到0178CA90这里看了一下,我猜是程序把加密字付串已经解压出来了,明文存在一个变量里,这个变量的地址就在这里了。于是修改上面的WriteProcessMemory的程序,把这个基址对应的内容清空。打开这个程序后,运行一下补丁程序,本来以为已经OK了,迫不及待的打开一张图片,发现还是有水印。用winhex看了一下内存,原来这个地址也是变的。

回头想了一下,发现我的想法是错误的,因为这个地址所指向的水印字符串其实也是新开一个MDI子窗口后实时生成的。那么他必然会是每次都变,与上面第一种尝试其实是一样的。

第三阶段:爆破

虽然上面的尝试不成功,但是已经找到加水印的位置所在,这是没有可以肯定的。看来还是要一步步的跟踪才行。在上面call给eax赋值后,这个水印字符串被压进了栈里,再往下走四行,在" call eax "后,发现栈里面的字符串没了,有蹊跷!重来一遍跟进call eax内部,哈哈,还真是有发现,这里就是写字到图片上的过程,里面有这么一行。

汇编代码
  1. 78228A11    FF15 00181D78   call    dword ptr [<&USER32.DrawTextA>]  ; USER32.DrawTextA 

这更加肯定了我刚才的想法,这一段代码就是水印相关的。再回头看一下代码,往下走,在写好字以后出现了一个retn,说明这个添加水印文字被封装成了一个函数。那能不能直接把这个函数给nop掉?

跟踪代码来到上层调用的地方

汇编代码
  1. 00416041   .  50            push    eax  
  2. 00416042      E8 49150A00   call    004B7590  
  3. 00416047   .  83C4 0C       add     esp, 0C 

这个call就是刚才的添加水印的函数。上面出现了一个push,可能是要为函数传递参数。不过通过单步运行这三行,发现push与函数无关,因为call调用完后栈里没有变化。于是尝试直接把这个call通过nop填充。填充完毕跑一下,哇哈哈,搞定了。现在任意打开新窗口加载图像,都不会有水印信息了。

总结

主要是指导方法上出现了错误,导致前两种方法的尝试花费了不少时间。因为要把程序内的文字换成别的,最简单的就是直接修改EXE,或者修改内存,但是没有考虑到这个程序这种复杂的情况。就是每开一个新的MDI子窗口,水印信息实时计算一次。这样水印信息的地址一直是在变化的。

当然如果一开始就用OllyDBG调试然后找到call添加水印的函数的地方给nop掉,又有可能出现杀鸡用牛刀的情况,比如某PDF转JPG的程序,水印是裸写在EXE里的,自己修改一下可以做成任何自己的版权信息。

时间花了一些,好在最后还是成功破解了,呵呵

Tags: OllyDBG,破解

windows鼠标不能拖放的解决

昨天用Flex Builder,发现不能拖动控件到编辑区添加控件了,以为是eclipse配置出了问题,搞了好久没搞好,重启一下windows又可以用了。

结果到晚上的时候发现又不行了,后来发现桌面上的图标也是不能拖动的,单击后成选中状态,鼠标一移动就变成未选中了。这回知道是系统问题了,搜“windows 不能拖动”,找到了百度帖吧一个神帖:

1 图标不能拖动

前几天本人的电脑出现桌面上的图标不能拖动,我的电脑里面的图标也不能拖动,maxthon不能用上下键和pageup和pagedown翻页,以为是病毒或木马,用卡巴斯基和木马克星查没发现问题,考虑是windows的问题,格了重装,本来用的是windows xp  sp2,又重装了一次,还不行,格了重装windows me,谁知还是老问题!又装xp,还不行,无奈先用着,昨天一开机,好了!一点问题都没有,用一天都正常,今天开机又出问题了!各位大大,谁见过这个毛病,小弟这里多谢了!

2 回复:图标不能拖动

按两下“ESC”键,试一试,行了吗?我的电脑就是这样弄好的


于是我试了一下,还真的好了,神人呀,下面跟了好几页,全都是膜拜二楼的。此刻真是内牛满面,真想抱着电线杆对着上面的狗皮膏药大喊“我的病终于治好啦。。。”

Tags: