RSP – 感谢。(Bleach ED 14)

 http://www.tudou.com/v/mLUlHUZGULs

笑ってくれる
支えてくれる

励ましてくれる大事な人へ

何気ない日々この毎日
いまこうして ここに生き
やらなきゃ ならないことも
なかなか出来ないことも
それたくさん あるけど
いつでも がんばっでこう
それも周りの笑顔 に励まされたおかげだよ!
なんで「CAN」だって言ってやっば
「本当感謝」 それがアンサー
掛け替えない 友達家族
共にここちよこ過ごす
今があって 皆があって
あって かって 笑ってられ
たまらずに涙を 流すほどに「ありがどう!」

笑ってくれる
支えてくれる
励まれしてくれる大事な人へ
今送る  この気持ちを
忘れずに いつも

この前では意地悪ばっかり
でも二人ならいつでも優しい
口げんかは負けてばっかり
MY GOD!最後は「I’m Sorry」笑ったり
偶にはお洒落して出掛けったり                              
けどわがままで迷惑掛けたり
どんな時も見守ってくれ
あんな足り 包まれて
だからあなたにも「ありがどう」
今さらビャンレーぐサーけど
一人で迷い込んだ 飛んでるも
一緒なら 光のごぽうれる ほ~え~
忙しくても疲れていても
お休み途端は押(お)してくれる
その小さな優しさが
いつもうれしいから

笑ってくれる
支えてくれる
励ましてくれる大事な人へ
今送る この気持ちを
忘れずに いつも

偶に擦れ違ったり
意地を張(は)りあったり
素直になれ変けど
結局やっばめっちゃな意地やがら
これからも きょしくれっと  こころから

当たり前でも
当たり前じゃない
生きている今に感謝してたい
いつまでも 幸せだっと
あなたに伝えたい

笑ってくれる
支えてくれる
はげましてくれる大事な人へ
今送る この気持ちを
忘れずに いつも

明日もあさっても そう皆で笑ってよ
どんな時も変わらない  絆を信じよう~~
今日明日もあさっても  そう一緒に歩いてこう!
もう何が起こっても なんとかなりそう

ありがとう  ありがとう
ありがとう  ありがとう
ありがとう  ありがとう
ありがとう  ありがとう

New Office & Snow & New Chinese Lunar Year

New Office

Taking a look at my new office in Block B. ^^

To my memory, it should be last week when we packaged our luggage and moved into this new room.

As usual, there’s nothing numerous and complicated on my desktop. Keeping everything simple and clean, it’s my style. And, maybe you’ve found something special if you are careful enough, the little white box should catch your eyes. Yes, it’s MAC mini, lent from Topbase Team, where we used to test MC3 with the product OS X platform based. But, I owns it!!~~ It’s so great that while working on Windows Platform, I still have chance to play with Apple MAC OS.

IMG_0095 

Snow

As I am writing the blog here, it is still snowing endlessly outside. It should be heavy snow I have ever experienced in my 23-year life. Perhaps, it will be another heavier one in the future? No excitement, no passion to rash out to have an entertainment to make up for my childhood with no-snow winter. Just sit down here, in front of my machine. Coding…

One of my colleague play a joke, that, snow is a meteorologic war U.S. launch to China. Then the topic turns around to how to fight against American, if a real war is raised. An good idea is that as a SWD in autodesk, we can introduce bugs on the sneak. 🙂

New Year

IMG_0091IMG_0080

To me, 2008 should be an important year to be closer to my goal (Great Programmer or even Architecturer, to do the contribution to Human Being, and also make a lot of money to buy a Benz). I will not be at leisure anymore. Specific tasks I will face are: English oral communication improvement (Seems like managers are all mastering English), decision maker (Stephen has been promoted to Tech Leader, I will be more responsible for MC3, and participate the development of CER project), underlayer technologies studying (CLR, and Windows internal).

And the last but not the least, keep being handsome, smart, and think different~~

Dump Imported Table of an Image

// PEDemo.cpp : Defines the entry point for the console application.
// I think this is a good starting to learn PE. Src attached here is with security check code stripped out.
// It is the simpliest way to dump out an imported table of a .Dll or .EXE.
#include "stdafx.h"
#include "windows.h"
#include "Dbghelp.h"
 
#pragma comment(lib, "Dbghelp.lib")
 
DWORD RVA2Offset(PIMAGE_NT_HEADERS pNTHeader, LPVOID pFileBase, DWORD dwRVA);
int _tmain(int argc, _TCHAR* argv[])
{
 PIMAGE_DOS_HEADER pDosHeader;
 PIMAGE_NT_HEADERS pNTHeader;
 PIMAGE_FILE_HEADER pFileHeader;
 PIMAGE_OPTIONAL_HEADER pOptionalHeader;
 
 TCHAR * filename = _T("C:\\WINDOWS\\notepad.exe");
 
 HANDLE hFile = CreateFile(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
 HANDLE hMappingFile = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
 LPVOID pFileBase = MapViewOfFile(hMappingFile, FILE_MAP_READ, 0, 0, 0);
 
 pDosHeader = (PIMAGE_DOS_HEADER)pFileBase;
 pNTHeader = (PIMAGE_NT_HEADERS)((BYTE*)pFileBase + pDosHeader->e_lfanew); // e_lfanew is a File Address.
 pFileHeader = &pNTHeader->FileHeader;
 pOptionalHeader = &pNTHeader->OptionalHeader;
 
 // Need to convert RVA to File Offset first
 DWORD dwRVA = pOptionalHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
 DWORD dwOffset = RVA2Offset(pNTHeader, pFileBase, dwRVA);
 PIMAGE_IMPORT_DESCRIPTOR pDescriptor = (PIMAGE_IMPORT_DESCRIPTOR)((BYTE*) pFileBase + dwOffset);
 
 while (pDescriptor->OriginalFirstThunk != 0)
 {
  char * dllname = (char*)((BYTE*)pFileBase + RVA2Offset(pNTHeader, pFileBase, pDescriptor->Name));
  printf("Dll Name: %s\n", dllname);
  PIMAGE_THUNK_DATA pThunk = (PIMAGE_THUNK_DATA)((BYTE*)pFileBase + RVA2Offset(pNTHeader, pFileBase, pDescriptor->OriginalFirstThunk));
  while (pThunk->u1.Function)
  {
   // u1.AddressOfData is the RVA of IMAGE_IMPORT_BY_NAME
   char * functionname = (char*)((BYTE*)pFileBase + RVA2Offset(pNTHeader, pFileBase, (DWORD)pThunk->u1.AddressOfData + 2));
   BYTE * functionordinal = (BYTE*)((BYTE*)pFileBase + RVA2Offset(pNTHeader, pFileBase, (DWORD)pThunk->u1.AddressOfData));
   printf("\t%X\t%s\n", *functionordinal, functionname);
   pThunk++;
  }
  pDescriptor++;
 }
 UnmapViewOfFile(pFileBase);
 CloseHandle(hMappingFile);
 CloseHandle(hFile);
 return 0;
}
DWORD RVA2Offset(PIMAGE_NT_HEADERS pNTHeader, LPVOID pFileBase, DWORD dwRVA)
{
 DWORD dwOffset;
 // Need to convert RVA to File Offset first
 PIMAGE_SECTION_HEADER pSectionHeader = ImageRvaToSection(pNTHeader, pFileBase, dwRVA);
 dwOffset = dwRVA + pSectionHeader->PointerToRawData – pSectionHeader->VirtualAddress;
 return dwOffset;
}