https://addons.mozilla.org/en-US/firefox/addon/tab-mix-plus/
https://addons.mozilla.org/en-US/firefox/addon/firegestures/
http://code.google.com/p/gmarks/downloads/detail?name=GMarks-1.0.3.xpi&can=2&q=
http://www.firefox.net.cn/forum/viewtopic.php?t=29894
as3优化总结
有意思的一条:
10) 寻找局部变量(this方法同with方法比较)
局部变量的定位方法很多。我们发现用with比用this更加有优势!
1 // #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
2
3 #include "GL\glut.h"
4 #include <iostream>
5
6 static GLfloat fSpin = 0.0;
7 static GLfloat fClearBlue = 0.2;
8 static bool bRotating = false;
9
10 void display(void)
11 {
12 // clear
13 glClear(GL_COLOR_BUFFER_BIT);
14
15 glPushMatrix();
16 glRotatef(-fSpin, 0.0, 0.0, 1.0);
17 glColor3f(1.0, 1.0, 1.0);
18 glRectf(-25.0, -25.0, 25.0, 25.0);
19
20 glColor3f(1.0, 0.0, 0.0);
21
22 glBegin(GL_POLYGON);
23 glVertex3i(-16, 18, 0);
24 glVertex3i(16, 18, 0);
25 glVertex3i(16, 10, 0);
26 glVertex3i(-16, 10, 0);
27 glEnd();
28
29 glBegin(GL_POLYGON);
30 glVertex3i(-4, 10, 0);
31 glVertex3i(4, 10, 0);
32 glVertex3i(4, 5, 0);
33 glVertex3i(-4, 5, 0);
34 glEnd();
35
36 glBegin(GL_POLYGON);
37 glVertex3i(-20, 5, 0);
38 glVertex3i(20, 5, 0);
39 glVertex3i(20, -3, 0);
40 glVertex3i(-20, -3, 0);
41 glEnd();
42
43 glBegin(GL_POLYGON);
44 glVertex3i(0, 2, 0);
45 glVertex3i(18, -16,0);
46 glVertex3i(13, -21,0);
47 glVertex3i(0, -8,0);
48 glEnd();
49
50 glBegin(GL_POLYGON);
51 glVertex3i(0, 2, 0);
52 glVertex3i(-18, -16,0);
53 glVertex3i(-13, -21,0);
54 glVertex3i(0, -8,0);
55 glEnd();
56
57 glPopMatrix();
58
59 glutSwapBuffers();
60 }
61
62 void spinDisplay(void)
63 {
64 // change the params for displaying the squre
65 fSpin += 0.05;
66 if (fSpin > 360.0) {
67 fSpin -= 360.0;
68 }
69 glutPostRedisplay();
70 }
71
72 void reshape(int w, int h)
73 {
74 glViewport(0, 0, (GLsizei) w, (GLsizei) h);
75 glMatrixMode(GL_PROJECTION);
76 glLoadIdentity();
77 glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
78 glMatrixMode(GL_MODELVIEW);
79 glLoadIdentity();
80 }
81
82 void mouse(int button, int state, int x, int y)
83 {
84 switch(button) {
85 case GLUT_LEFT_BUTTON:
86 // start or stop the rotating square
87 if (state == GLUT_DOWN && !bRotating) {
88 bRotating = true;
89 glutIdleFunc(&spinDisplay);
90 }
91 else if (state == GLUT_DOWN && bRotating) {
92 bRotating = false;
93 glutIdleFunc(NULL);
94 if ((GLint)(fSpin+0.5)%90 == 0) {
95 fClearBlue = 1.0 - fClearBlue;
96 glClearColor(0.0, 0.0, fClearBlue, 0.0);
97 }
98 }
99 break;
100 case GLUT_RIGHT_BUTTON:
101 break;
102 default:
103 break;
104 }
105 }
106
107 void init(void)
108 {
109 // select the clearing color
110 glClearColor(0.0, 0.0, fClearBlue, 0.0);
111
112 glShadeModel(GL_FLAT);
113 }
114
115 void idle(void)
116 {
117 if (glutGetWindow() == 0) {
118 exit(0);
119 }
120 }
121
122 /*
123 * Declare display mode, window size, position,
124 * open a window titled,
125 * call init routines,
126 * register display, reshape, mouse callback function
127 * enter main loop
128 */
129 int main( int argc, char * argv[] )
130 {
131 glutInit(&argc, argv);
132
133 // GLUT_DOUBLE - double buffer
134 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
135 glutInitWindowPosition(100, 100);
136 glutInitWindowSize(400, 400);
137 glutCreateWindow("DoNeY's first OpenGL app");
138
139 init();
140
141 glutDisplayFunc(&display);
142 glutReshapeFunc(&reshape);
143 glutMouseFunc(&mouse);
144 glutIdleFunc(&idle);
145
146 glutMainLoop();
147 return 0;
148 }
149
1 1
2 2 #include "GL\glut.h"
3 3
4 4 void Render()
5 5 {
6 6 glClearColor(0.0, 0.0, 0.3, 0.0);
7 7 glClear(GL_COLOR_BUFFER_BIT);
8 8 glColor3f(1.0, 0.5, 0.5);
9 9 glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
10 10 glBegin(GL_POLYGON);
11 11 {
12 12 glVertex3f(0.5, 0.75, 0.0);
13 13 glVertex3f(0.8, 0.25, 0.0);
14 14 glVertex3f(0.2, 0.25, 0.0);
15 15 }
16 16 glEnd();
17 17
18 18 //glRectf(-0.5f,-0.5f,0.5f,0.5f);
19 19
20 20 glFlush();
21 21 }
22 22
23 23 int main( int argc, char * argv[] )
24 24 {
25 25 glutInit(&argc, argv);
26 26 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
27 27 glutInitWindowPosition(100, 100);
28 28 glutInitWindowSize(400, 400);
29 29 glutCreateWindow("DoNeY's first OpenGL app");
30 30 glutDisplayFunc(&Render);
31 31 glutMainLoop();
32 32 return 0;
33 33 }
34 34
35
大部分的病毒和木马都是通过加载系统启动项来运行的,也有一些是注册成为系统服务来启动,他们主要通过修改注册表来实现这个目的,主要有以下几个键值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsCurrent\Version\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsCurrent\Version\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsCurrent\Version\RunServicesOnce
但是与一般的木马,病毒不同的是,就有一些病毒偏偏不通过这些来加载自己,不随着系统的启动运行。木马病毒的作者抓住了一些用户的心理,等到用
户运行某个特定的程序的时候它才运行。因为一般的用户,只要发觉自己的机子中了病毒,首先要察看的就是系统的加载项,很少有人会想到映像劫持,这也是这种病毒高明的地方。
映像劫持病毒主要通过修改注册表中的
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
项来劫持正常的程序,比如有一个病毒 vires.exe 要劫持qq程序,它会在上面注册表的位置新建一个qq.exe项,再在这个项下面新建一个字符串的键 debugger把其值改为C:\WINDOWS\SYSTEM32\VIRES.EXE(这里是病毒藏身的目录)即可。