
置顶随笔
摘要: 近期手上项目需要选择一配置信息保存方案,现就XML、JSON、Protocol Buffer(以下简称PB)、Lua做一次横向对比。首先要说明的是Lua严格来说属于嵌入式脚本语言,而XML、JSON、PB都属于数据交换格式,两者之间不属于同类别,按理说不应该放在一起比较,但是就项目需求来讲,Lua也能够实现配置信息保存。故而将Lua和XML、JSON、PB放在一起做横向对比。 XML JSON...
阅读全文
posted @ 2008-11-06 12:44 虾虾 阅读(2166) 评论(6)
编辑

2011年9月4日
前些日子去中国电信装了E169套餐,
送了一个华为HG526无线路由猫和
一个中兴xxx型号滴网络机顶盒(还没开始捣鼓),
当然无线路由猫一如既往滴是阉割版。
在搜索一番之后,开始了我滴破解之旅。
1、打开猫滴管理页面,并用telecomadmin和nE7jA%5m登陆;
2、把一个U盘插到猫上
3、打开管理=》设备管理,备份配置
4、打开U盘滴ctce8_hg526.cfg,发现全是乱码。
经过一番分析,
写出一下加解密程序;
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 enum ErrCode
5 {
6 EC_Ok,
7 EC_ArgErr,
8 EC_OptionErr,
9 EC_CantOpenInFile,
10 EC_CantOpenOutFile,
11 };
12
13 enum OpCode
14 {
15 OC_Decode,
16 OC_Encode,
17 };
18
19 int main(int argc, char *argv[])
20 {
21 int r = EC_Ok;
22 FILE *f_in = 0, *f_out = 0;
23
24 do
25 {
26
27 if (argc != 4)
28 {
29 r = EC_ArgErr;
30 break;
31 }
32
33 int op;
34 if (*argv[1] == 'd' || *argv[1] == 'D')
35 {
36 op = OC_Decode;
37 }
38 else if (*argv[1] == 'e' || *argv[1] == 'E')
39 {
40 op = OC_Encode;
41 }
42 else
43 {
44 r = EC_OptionErr;
45 break;
46 }
47
48 f_in = fopen(argv[2], "rb");
49 if (!f_in)
50 {
51 r = EC_CantOpenInFile;
52 break;
53 }
54
55 f_out = fopen(argv[3], "wb");
56 if (!f_out)
57 {
58 r = EC_CantOpenOutFile;
59 break;
60 }
61
62 int buf = 0;
63 switch (op)
64 {
65 case OC_Encode:
66 {
67 while (fread(&buf, 1, 1, f_in))
68 {
69 buf <<= 1;
70 if (buf > 127) buf -= 127;
71 fwrite(&buf, 1, 1, f_out);
72 }
73 }
74 break;
75 case OC_Decode:
76 {
77 while (fread(&buf, 1, 1, f_in))
78 {
79 if (buf & 0x01) buf += 127;
80 buf >>= 1;
81
82 fwrite(&buf, 1, 1, f_out);
83 }
84 }
85 break;
86 }
87 }
88 while(0);
89
90 switch(r)
91 {
92 case EC_Ok:
93 {
94 printf("Convert Ok.\n");
95 }
96 break;
97 case EC_ArgErr:
98 case EC_OptionErr:
99 {
100 printf("Hg526Cfg <d|e> infile outfile\n");
101 }
102 break;
103 case EC_CantOpenInFile:
104 {
105 printf("Can't Open InFile: %s\n", argv[2]);
106 }
107 break;
108 case EC_CantOpenOutFile:
109 {
110 printf("Can't Open OutFile: %s\n", argv[3]);
111 }
112 break;
113 };
114
115 if (f_in) fclose(f_in);
116 if (f_out) fclose(f_out);
117
118 return r;
119 }
可执行程序下载:Hg526Cfg_Release_MT_MaxSpeed
今天晚上就写到里吧,这将是一个系列文章,一步步打造属于自己滴全定制无线猫
posted @ 2011-09-04 01:57 虾虾 阅读(2521) 评论(0)
编辑

2009年4月17日
最近在用Ogre+CEGUI+OIS做游戏。在开发的过程出现了种种问题,现将问题一一整理,并将解决方案释出,供同好参阅。
OIS默认鼠标占用模式是鼠标独占使用,表现为鼠标指针无法移除当前窗口。那么如果想把鼠标指针移除窗体怎么解决呢?让OIS使用鼠标协作模式啊!代码如下:
//创建设备
OIS::ParamList pl;
size_t windowHnd = 0;
std::ostringstream windowHndStr;
m_Window->getCustomAttribute(Ogre::String(”WINDOW”), &windowHnd);
windowHndStr << windowHnd;
pl.insert(std::make_pair(std::string(”WINDOW”), windowHndStr.str()));
pl.insert(std::make_pair(std::string(”w32_mouse”), std::string(”DISCL_FOREGROUND”)));
pl.insert(std::make_pair(std::string(”w32_mouse”), std::string(”DISCL_NONEXCLUSIVE”)));
m_InputManager = OIS::InputManager::createInputSystem( pl );
这下好了,鼠标可以移除当前窗体了,突然发现没对,怎么有两个鼠标指针?好嘛,我就在当前窗口隐藏掉系统的指针!代码如下:
ShowCursor(0); //隐藏系统鼠标指针
这回应该没问题了吧~~~啦啦啦,还是没对哦!鼠标定位不准确~~~~~~~~,行!那就在mouse::MouseMoved 事件中把 Moved(e.state.X.rel, e.state.Y.rel) 替换成Postion(e.state.X.abs, e.state.Y.abs)
在编译运行,矣~~~~~~咋个指针在一个很小范围内移动呢?哦,原来OIS默认宽和高是50px啊,来设置成RenderWindow的宽高即可!代码如下:
_mouse->getMouseState().width=_render_window->getWidth();
_mouse->getMouseState().height=_render_window->getHeight();
嘿嘿,这下完美了!oh,my god~~~~~~~~为什么这样对我?鼠标都移除窗体了,为什么窗体内的那个指针还要动,那我就在MouseMoved中做边界检查,对了为了防止误点,还要在mousePressed 和 mouseReleased 做边界检查,代码就不啰嗦了!~~~=
至此OGRE+OIS+CEGUI鼠标非独占使用,完美解决!
posted @ 2009-04-17 00:54 虾虾 阅读(3927) 评论(5)
编辑

2008年11月6日
近期手上项目需要选择一配置信息保存方案,现就XML、JSON、Protocol Buffer(以下简称PB)、Lua做一次横向对比。首先要说明的是Lua严格来说属于嵌入式脚本语言,而XML、JSON、PB都属于数据交换格式,两者之间不属于同类别,按理说不应该放在一起比较,但是就项目需求来讲,Lua也能够实现配置信息保存。故而将Lua和XML、JSON、PB放在一起做横向对比。
| |
XML |
JSON |
PB |
Lua |
| 数据结构支持 |
复杂结构 |
简单结构 |
较复杂结构 |
复杂结构 |
| 数据保存方式 |
文本 |
文本 |
二进制 |
文本 |
| 数据保存大小 |
大 |
一般 |
小 |
一般 |
| 解析效率 |
慢 |
一般 |
快 |
稍快 |
| 语言支持程度 |
非常多 |
多 |
C++/Java/Python |
多 |
| 开发难度?繁琐? |
繁琐 |
简单 |
简单 |
相对繁琐 |
| 学习成本 |
低 |
低 |
低 |
高 |
| 适用范围 |
数据交换 |
数据交换 |
数据交换 |
数据保存及脚本处理 |
最终我的选择为Lua,理由如下:
首先配置文件可能很复杂;其次需要脚本功能;Lua性能较好;语言支持程度好,本项目除了用c++做主要开发外,可能还有大量辅助软件开发,就要求快速开发,性能适用就好,因此可能会选择其他语言做快速开发。而lua的多语言支持还可以。
posted @ 2008-11-06 12:44 虾虾 阅读(2166) 评论(6)
编辑

2008年8月16日
最近公司要和某网游公司合作推广某网游X
公司领导让我们这些小员工们都玩
每天还要定任务,必须达到多少多少级,并写下对游戏的看法
这对于很少玩网游的我来说不得不说是一个痛苦,
不觉突然想起,既然是网游就有辅助程序吧,网上搜索
发现该网游还真的有了,辅助程序,
Down下来,用用,还不错,
有时间限制?
正好 好好整理整理自己对 ASM 的学习成果,干掉之
找来 od
干掉辅助程序,
哈哈,可惜啊 用ASProtect 混淆过了?
花指令tnnd真多
看看吧,是分析他得算法 模拟一个Server出来
还是 直接干掉吧
明天在试试 如果能去掉花指令 成功分析出算法
就模拟一个Server出来
不行就干掉吧
ps:本文仅用于自己学习过程的记录,文中所提网游辅助程序,并非本人开发,本人进行分析,也是为了研究学习。
posted @ 2008-08-16 04:31 虾虾 阅读(128) 评论(0)
编辑

2008年8月10日
摘要: 呵呵,一直都在园子里面潜水 看各位大大的好文 努力学习ing不想注册Id 这么麻烦 还要人工审核 万幸的是 我一次通过 还好还好
阅读全文
posted @ 2008-08-10 08:52 虾虾 阅读(25) 评论(1)
编辑