2009年2月26日
#
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更加有優勢!
今天項目Milestone3的review
總體各方面來說還挺滿意
最近不少wower包括我自己都碰到了wow目錄下出現危險dll文件而可能遭木馬竊取資料的情況,
做了個小工具,與大家分享,歡迎交流意見建議。
[::艾澤拉斯國家地理 BBS.NGACN.CC::]
在對于那些dll文件的最后修改時間與標準版本最后修改時間比較,我不太清楚大家手頭的dll文件如何, 希望大家能把使用中出現的情況反饋給我,在此感謝。
在您wow前、wow時打開WowDLLChecker,它將幫助您找出并保持檢測掃描:
wow.exe和目錄下DLL等被修改過的文件、危險的多余DLL文件、以及缺失的文件。
不用擔心有dll文件屬性是只讀或隱藏或系統,工具是會掃描到的。
同時還為你檢查是否有wow,laucher的映像劫持。
使用:放置到你的wow文件夾并執行。
PS. 此程序無任何對網絡的訪問。
這個鏈接應該可以吧
猛擊此處下載→ [ WowDLLChecker_20100921_1.0.3.22.rar] 59.3 KB
缺少.Net庫的童鞋請下載[ http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn Microsoft .NET Framework Version 2.0 組件包(x86) ]
== Log ==
20091103 1.0.2.0 new features: MD5 check;
Tool self check result;
Wow.exe and Launcher.exe check;
Colorized rows to indicate file status.
20091104 1.0.2.1 new features: Changed last modified time judgement;
Configuration of keep checking;
Fixed language setting;
Minimized tray has a balloon tooltip now.
20091113 1.0.2.2 new features: Disabled the judgement for last modified time;
Fixed the colorize process.
20091114 1.0.2.3 new features: Looped in repair.exe;
Indicates wow client version the tool is based on;
Added suggestion message;
Adjusted the colorize process.
20091208 1.0.2.4 new features: Now concerns some DLLs of vc7 env;
Prepare checking system for multi regions.
20100202 1.0.3.0 new features: Now supports examination for WOW.TW;
Supports region selection between: zhCN, zhTW;
Supports language selection between: simplified Chinese, traditional Chinese, english;
Auto check your region for first running this app;
Auto saves/loads your changed settings.
20100915 1.0.3.20 Updated for CWOW WLK.
Sorry that in this version, TW info is wrong.
20100916 1.0.3.21 Bug fix.
20100921 1.0.3.22 Enhanced security check with MD5 and Exe Dll FileVersion.
Compatible with different versions of msvc dlls.
Info of zhCN 3.2.2.12484 added.
Info of zhTW 3.3.5.12340 added.
WowDLLChecker.exe
Size: 69645 bytes
File Version: 1.0.3.22
Modified: Tuesday, September 21, 2010, 11:03:05
MD5: 9ADC90F7AA797F19C76EF5AF0D8AD74F
SHA1: EAC9FA7ABA22534D2E9CEEE87C8E37AA281E9CD2
CRC32: 43D7A492
WowDLLChecker_20100921_1.0.3.22.rar
Size: 61572 bytes
Modified: Tuesday, September 21, 2010, 11:05:47
MD5: E15F7C16B908A2BE4FC3E80B9ED1694B
SHA1: 3D736739890938C9AF85A0D4B6914D024613D0CE
CRC32: CA778324
LOG.
--DONE
多余非官方文件√
文件大小比較√
最后修改時間比較√
MD5√
IFEO of wow.exe, launcher.exe√
支持臺服√
支持多語言√
自檢測結果√
--TODO
被加載DLL
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(這里是病毒藏身的目錄)即可。
摘要: WowDLLChecker (c) Ouditian [rev.20091208] ver 1.0.2.4 for CWOW 3.1.3
Put this checker into your World of Warcraft directoy and execute it to check dangerous DLLs.
WowDLLChecker.exe
閱讀全文
Where is Form's Loaded event?
[FW]http://weblogs.asp.net/kennykerr/archive/2004/11/26/where-is-form-s-loaded-event.aspx
Wow, it’s been a while since I last posted something here. We’ve recently moved to BC so I’ve been pretty distracted. I hope to be able to post more regularly in the coming weeks.
This is a bit off-topic for me but here goes.
Recently I needed to run some code right after a form is displayed for the first time. The Form.Load
event is handy for performing various tasks when a form is loading but
before it is displayed for the first time. Unfortunately there is no
corresponding Form.Loaded event to notify the application that the form
has actually loaded and is visible.
Fortunately it’s quite easy to pull it off without resorting to the WaitForInputIdle function. All you need to do is override Form’s OnLoad method and add an event handler for the Application.Idle
event. Since we only want to be notified a single time that the form is
loaded, we immediately remove the delegate in the event handler. You
can of course register the event handler earlier in the form or
application’s lifetime but I prefer to keep delegates registered for as
short a period as possible.
Here’s a simple example:
1 protected override void OnLoad(EventArgs args)
2 {
3 base.OnLoad(args);
4
5 Application.Idle += new EventHandler(OnLoaded);
6 }
7
8 private void OnLoaded(object sender,
9 EventArgs args)
10 {
11 Application.Idle -= new EventHandler(OnLoaded);
12
13 // TODO: add relevant code here
14 }
15
This
might be useful, for example, if you need to prompt the user (the
horror!) for something but would prefer the dialog box to appear in the
context of your application’s main window.
© 2004 Kenny Kerr
摘要: UltraEdit 允許在搜索菜單下面列出了的許多搜索和替換功能中使用正則表達式。正則表達式能讓更多的復雜的搜索和替換功能變成簡單的操作。(中文版界面上顯示為“正規表達式”)
有兩個可使用的語法集合。下面的第一表顯示出在 UltraEdit 的更早的版本被使用的原來的 UltraEdit 句法。第二表給出了可選的"Unix"類型的正則表達式。這可以從配置單元啟用。
&n...
閱讀全文
使用ruby來操作excel文件首先需要在腳本里包含以下語句
require 'win32ole'
把win32ole包含進來后,就可以通過和windows下的excel api進行交互來對excel文件進行讀寫了.
打開excel文件,對其中的sheet進行訪問:
excel = WIN32OLE::new('excel.Application')
workbook = excel.Workbooks.Open('c:\examples\spreadsheet.xls')
worksheet = workbook.Worksheets(1) #定位到第一個sheet
worksheet.Select
讀取數據:
worksheet.Range('a12')['Value'] #讀取a12中的數據
data = worksheet.Range('a1:c12')['Value'] #將數據讀入到一個二維表
找到第一處a列的值為空值
line = 1
while worksheet.Range("a#{line}")['Value']
line=line+1
end #line的值為第一處空白行的行數
將第一列的值讀入到一個數組中
line = '1'
data = []
while worksheet.Range("a#{line}")['Value']
data << worksheet.Range("a#{line}:d#{line}")['Value']
line.succ!
end
將數據寫入到excel表格中
worksheet.Range('e2')['Value'] = Time.now.strftime '%d/%m/%Y' #單個值
worksheet.Range('a5:c5')['Value'] = ['Test', '25', 'result'] #將一個數組寫入
調用宏定義
excel.Run('SortByNumber')
設置背景色
worksheet.Range('a3:f5').Interior['ColorIndex'] = 36 #pale yellow
# 將背景色恢復成無色
worksheet.Range('a3:f5').Interior['ColorIndex'] = -4142 # XlColorIndexNone constant
# 使用Excel constant 將背景色恢復成無色
worksheet.Range('a3:f5').Interior['ColorIndex'] = ExcelConst::XlColorIndexNone
保存
workbook.Close(1)
# 或
workbook.SaveAs 'myfile.xls'
# 默認路徑是系統定義的"我的文檔"
結束會話
excel.Quit
一些相對完整的代碼片段
創建一個excel文件并保存
require 'win32ole'
excel = WIN32OLE.new("excel.application")
excel.visible = true # in case you want to see what happens
workbook = excel.workbooks.add
workbook.saveas('c:\examples\spreadsheet1.xls')
workbook.close
操作excel文件的幾個重要元素
Excel => workbook => worksheet => range(cell)
我理解的是excel為類名,workbook為一個具體的(excel文件)實例,創建好實例后,worksheet是實例(workbook,工作簿)中的一個工作表,然后可
以對工作表中的每個單元格(range(cell))進行具體的讀寫------------------按照這樣操作肯定沒有錯,不過下面的這些語句又讓我有些疑惑
excel.workbooks("Mappe1").worksheets("Tabelle1").range("a1").value #讀取名為Mappe1的excel文件中工作表名為Tabelle1的a1單元格中的值
excel.worksheets("Tabelle1").range("a1").value #作用同第一條語句
excel.activeworkbook.activesheet.range("a1").value #作用同第一條語句
excel.activesheet.range("a1").value #作用同第一條語句
excel.range("a1").value #作用同第一條語句
excel可以直接操作所有的屬性,默認為當前活躍的工作簿/工作表
對單元格的操作:
某個單元格: sheet.range("a1")
a1到c3的值: sheet.range("a1", "c3") 或 sheet.range("a1:c3")
第一列: sheet.range("a:a")
第三行: sheet.range("3:3")
獲得單元格的值:
range.text #讀取值,返回為字符串格式,如果單元格內為數字,有可能會被截斷小數點后的位數
sheet.range("a1").text
range.value #讀取值,數字不會截斷
sheet.range("a1").value
對單元格設置值
sheet.range("a1").value = 1.2345
或
sheet.range("a1").value = '1.2345'
迭代訪問:
sheet.range("a1:a10").each{|cell|puts cell.value}
如果范圍是一個矩形,則會按行循環迭代訪問
sheet.range("a1:b5").each{|cell|puts cell.value}
block迭代,并打印出每行的第一個值
sheet.range("b3:c7").rows.each{|r|puts r.cells(1,1).value}