Skip to content

Commit 412be72

Browse files
committed
fix file encoding in non-ambigous cases
1 parent 98f62cb commit 412be72

34 files changed

+291
-291
lines changed

EventLogging.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,4 @@ void EventLogging::LogIt(WORD CategoryID, DWORD EventID, LPCTSTR ArrayOfStrings[
5252
ReportEvent(m_hEventLinker,EVENTLOG_INFORMATION_TYPE,CategoryID,
5353
EventID,NULL,NumOfArrayStr,RawDataSize,ArrayOfStrings,RawData);
5454

55-
}
55+
}

cache.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "override.h"
22

3-
//CreateDIBシニハ」ャスォヤレサ贍ニマツチミエホハコ�ツDIBヌ
3+
//CreateDIB隶。謨ー�悟ー�惠扈伜宛荳句�谺。謨ー蜷取峩譁ーDIB蛹コ
44
#define BITMAP_REDUCE_COUNTER 256//トャネマ1024
55

66

@@ -157,7 +157,7 @@ void CBitmapCache::DrawHorizontalLine(int X1, int Y1, int X2, COLORREF rgb, int
157157
dec ebx
158158
jnz L1
159159
}
160-
#else*/ //カヤモレ64ホサマオヘウ」ャハケモテCモ�ヤ
160+
#else*/ //蟇ケ莠64菴咲ウサ扈滂シ御スソ逕ィC隸ュ險
161161
for (int yy=Y1; yy<Y2; yy++) {
162162
for (int xx=X1; xx<X2; xx++) {
163163
*( (DWORD*)m_lpPixels + (yy * xSize + xx) ) = rgb;

colorinvert.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#pragma once
22
//formula: (x+482)^2+(y+481)^2=880^2
3-
unsigned char InvertTable[260] = { 255,255,254,253,253,252,251,251,250,249,249,248,247,247,246,245,245,244,243,242,242,241,240,240,239,238,238,237,236,235,235,234,233,233,232,231,230,230,229,228,227,227,226,225,224,224,223,222,221,221,220,219,218,218,217,216,215,215,214,213,212,211,211,210,209,208,208,207,206,205,204,204,203,202,201,200,199,199,198,197,196,195,195,194,193,192,191,190,189,189,188,187,186,185,184,183,183,182,181,180,179,178,177,176,176,175,174,173,172,171,170,169,168,167,166,166,165,164,163,162,161,160,159,158,157,156,155,154,153,152,151,150,149,148,147,146,145,144,143,143,142,141,140,138,137,136,135,134,133,132,131,130,129,128,127,126,125,124,123,122,121,120,119,118,117,115,114,113,112,111,110,109,108,107,106,104,103,102,101,100,99,98,96,95,94,93,92,91,90,88,87,86,85,84,82,81,80,79,78,76,75,74,73,71,70,69,68,66,65,64,63,61,60,59,58,56,55,54,52,51,50,48,47,46,44,43,42,40,39,38,36,35,33,32,31,29,28,26,25,24,22,21,19,18,16,15,13,12,10,9,7,6,4,3,1,0,0,0,0,0};
3+
unsigned char InvertTable[260] = { 255,255,254,253,253,252,251,251,250,249,249,248,247,247,246,245,245,244,243,242,242,241,240,240,239,238,238,237,236,235,235,234,233,233,232,231,230,230,229,228,227,227,226,225,224,224,223,222,221,221,220,219,218,218,217,216,215,215,214,213,212,211,211,210,209,208,208,207,206,205,204,204,203,202,201,200,199,199,198,197,196,195,195,194,193,192,191,190,189,189,188,187,186,185,184,183,183,182,181,180,179,178,177,176,176,175,174,173,172,171,170,169,168,167,166,166,165,164,163,162,161,160,159,158,157,156,155,154,153,152,151,150,149,148,147,146,145,144,143,143,142,141,140,138,137,136,135,134,133,132,131,130,129,128,127,126,125,124,123,122,121,120,119,118,117,115,114,113,112,111,110,109,108,107,106,104,103,102,101,100,99,98,96,95,94,93,92,91,90,88,87,86,85,84,82,81,80,79,78,76,75,74,73,71,70,69,68,66,65,64,63,61,60,59,58,56,55,54,52,51,50,48,47,46,44,43,42,40,39,38,36,35,33,32,31,29,28,26,25,24,22,21,19,18,16,15,13,12,10,9,7,6,4,3,1,0,0,0,0,0};

common.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ class CDebugElapsedCounter
497497
#endif
498498

499499

500-
//String to intオネマオチミコッハオトカィメ
500+
//String to int遲臥ウサ蛻怜�謨ー逧�ョ壻ケ
501501
/*
502502
int _StrToInt(LPCTSTR pStr, int nDefault)
503503
{
@@ -628,4 +628,4 @@ bool HookD2D1();
628628
void HookGdiplus();
629629
void ChangeFileName(LPWSTR lpSrc, int nSize, LPCWSTR lpNewFileName);
630630
std::wstring MakeUniqueFontName(const std::wstring strFullName, const std::wstring strFamilyName, const std::wstring strStyleName);
631-
std::string WstringToString(const std::wstring str);
631+
std::string WstringToString(const std::wstring str);

crc32.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,4 @@ class crc32
6060
return crc ^ ~0U;
6161
}
6262
};
63-
#endif
63+
#endif

directwrite.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2114,4 +2114,4 @@ void WINAPI IMPL_D2D1RenderTarget_DrawTextLayout(
21142114
options
21152115
);
21162116
}
2117-
}
2117+
}

directwrite.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@
1717
#define HOOK_DEFINE(rettype, name, argtype) ;
1818
#include "hooklist.h"
1919
#undef HOOK_DEFINE
20-
#undef HOOK_MANUALLY
20+
#undef HOOK_MANUALLY

dll.cpp

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -19,51 +19,51 @@ CMemLoadDll::~CMemLoadDll()
1919
}
2020
}
2121

22-
//MemLoadLibrary函数从内存缓冲区数据中加载一个dll到当前进程的地址空间,缺省位置0x10000000
22+
//MemLoadLibrary鍑芥暟浠庡唴瀛樼紦鍐插尯鏁版嵁涓姞杞戒竴涓猟ll鍒板綋鍓嶈繘绋嬬殑鍦板潃绌洪棿锛岀己鐪佷綅缃�0x10000000
2323
//返回值: 成功返回TRUE , 失败返回FALSE
24-
//lpFileData: 存放dll文件数据的缓冲区
25-
//DataLength: 缓冲区中数据的总长度
24+
//lpFileData: 瀛樻斁dll鏂囦欢鏁版嵁鐨勭紦鍐插尯
25+
//DataLength: 缂撳啿鍖轰腑鏁版嵁鐨勬�婚暱搴�
2626
BOOL CMemLoadDll::MemLoadLibrary(void* lpFileData, int DataLength, bool bInitDllMain, bool bFreeOnRavFail)
2727
{
2828
this->m_bInitDllMain = bInitDllMain;
2929
if(pImageBase != NULL)
3030
{
3131
return FALSE; //已经加载一个dll,还没有释放,不能加载新的dll
3232
}
33-
//检查数据有效性,并初始化
33+
//妫�鏌ユ暟鎹湁鏁堟�э紝骞跺垵濮嬪寲
3434
if(!CheckDataValide(lpFileData, DataLength))return FALSE;
35-
//计算所需的加载空间
35+
//璁$畻鎵�闇�鐨勫姞杞界┖闂�
3636
int ImageSize = CalcTotalImageSize();
3737
if(ImageSize == 0) return FALSE;
3838

39-
// 分配虚拟内存
39+
// 鍒嗛厤铏氭嫙鍐呭瓨
4040
void *pMemoryAddress = VirtualAlloc((LPVOID)0, ImageSize,
4141
MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
4242
if(pMemoryAddress == NULL) return FALSE;
4343
else
4444
{
45-
CopyDllDatas(pMemoryAddress, lpFileData); //复制dll数据,并对齐每个段
45+
CopyDllDatas(pMemoryAddress, lpFileData); //澶嶅埗dll鏁版嵁锛屽苟瀵归綈姣忎釜娈�
4646
//重定位信息
4747
/*if(pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress >0
4848
&& pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size>0)
4949
{
5050
DoRelocation(pMemoryAddress);
5151
}
52-
//填充引入地址表
53-
if(!FillRavAddress(pMemoryAddress) && bFreeOnRavFail) //修正引入地址表失败
52+
//濉厖寮曞叆鍦板潃琛�
53+
if(!FillRavAddress(pMemoryAddress) && bFreeOnRavFail) //淇寮曞叆鍦板潃琛ㄥけ璐�
5454
{
5555
VirtualFree(pMemoryAddress,0,MEM_RELEASE);
5656
return FALSE;
5757
}*/
58-
//修改页属性。应该根据每个页的属性单独设置其对应内存页的属性。这里简化一下。
58+
//淇敼椤靛睘鎬с�傚簲璇ユ牴鎹瘡涓〉鐨勫睘鎬у崟鐙缃叾瀵瑰簲鍐呭瓨椤电殑灞炴�с�傝繖閲岀畝鍖栦竴涓嬨��
5959
//统一设置成一个属性PAGE_EXECUTE_READWRITE
6060
unsigned long old;
6161
VirtualProtect(pMemoryAddress, ImageSize, PAGE_EXECUTE_READWRITE,&old);
6262
}
63-
//修正基地址
63+
//淇鍩哄湴鍧�
6464
pNTHeader->OptionalHeader.ImageBase = (DWORD)pMemoryAddress;
6565

66-
//接下来要调用一下dll的入口函数,做初始化工作。
66+
//鎺ヤ笅鏉ヨ璋冪敤涓�涓媎ll鐨勫叆鍙e嚱鏁帮紝鍋氬垵濮嬪寲宸ヤ綔銆�
6767
pDllMain = (ProcDllMain)(pNTHeader->OptionalHeader.AddressOfEntryPoint +(DWORD_PTR) pMemoryAddress);
6868
BOOL InitResult = !bInitDllMain || pDllMain((HINSTANCE)pMemoryAddress,DLL_PROCESS_ATTACH,0);
6969
if(!InitResult) //初始化失败
@@ -79,9 +79,9 @@ BOOL CMemLoadDll::MemLoadLibrary(void* lpFileData, int DataLength, bool bInitDll
7979
return TRUE;
8080
}
8181

82-
//MemGetProcAddress函数从dll中获取指定函数的地址
83-
//返回值: 成功返回函数地址 , 失败返回NULL
84-
//lpProcName: 要查找函数的名字或者序号
82+
//MemGetProcAddress鍑芥暟浠巇ll涓幏鍙栨寚瀹氬嚱鏁扮殑鍦板潃
83+
//杩斿洖鍊硷細 鎴愬姛杩斿洖鍑芥暟鍦板潃 , 澶辫触杩斿洖NULL
84+
//lpProcName: 瑕佹煡鎵惧嚱鏁扮殑鍚嶅瓧鎴栬�呭簭鍙�
8585
FARPROC CMemLoadDll::MemGetProcAddress(LPCSTR lpProcName)
8686
{
8787
if(pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress == 0 ||
@@ -140,55 +140,55 @@ FARPROC CMemLoadDll::MemGetProcAddress(LPCSTR lpProcName)
140140
void CMemLoadDll::DoRelocation( void *NewBase)
141141
{
142142
/* 重定位表的结构:
143-
// DWORD sectionAddress, DWORD size (包括本节需要重定位的数据)
144-
// 例如 1000节需要修正5个重定位数据的话,重定位表的数据是
143+
// DWORD sectionAddress, DWORD size (鍖呮嫭鏈妭闇�瑕侀噸瀹氫綅鐨勬暟鎹�)
144+
// 渚嬪 1000鑺傞渶瑕佷慨姝�5涓噸瀹氫綅鏁版嵁鐨勮瘽锛岄噸瀹氫綅琛ㄧ殑鏁版嵁鏄�
145145
// 00 10 00 00 14 00 00 00 xxxx xxxx xxxx xxxx xxxx 0000
146146
// ----------- ----------- ----
147-
// 给出节的偏移 总尺寸=8+6*2 需要修正的地址 用于对齐4字节
148-
// 重定位表是若干个相连,如果address 和 size都是0 表示结束
149-
// 需要修正的地址是12位的,高4位是形态字,intel cpu下是3
147+
// 缁欏嚭鑺傜殑鍋忕Щ 鎬诲昂瀵�=8+6*2 闇�瑕佷慨姝g殑鍦板潃 鐢ㄤ簬瀵归綈4瀛楄妭
148+
// 閲嶅畾浣嶈〃鏄嫢骞蹭釜鐩歌繛锛屽鏋渁ddress 鍜� size閮芥槸0 琛ㄧず缁撴潫
149+
// 闇�瑕佷慨姝g殑鍦板潃鏄�12浣嶇殑锛岄珮4浣嶆槸褰㈡�佸瓧锛宨ntel cpu涓嬫槸3
150150
*/
151-
//假设NewBase是0x600000,而文件中设置的缺省ImageBase是0x400000,则修正偏移量就是0x200000
151+
//鍋囪NewBase鏄�0x600000,鑰屾枃浠朵腑璁剧疆鐨勭己鐪両mageBase鏄�0x400000,鍒欎慨姝e亸绉婚噺灏辨槸0x200000
152152
DWORD Delta = (DWORD)NewBase - pNTHeader->OptionalHeader.ImageBase;
153153

154-
//注意重定位表的位置可能和硬盘文件中的偏移地址不同,应该使用加载后的地址
154+
//娉ㄦ剰閲嶅畾浣嶈〃鐨勪綅缃彲鑳藉拰纭洏鏂囦欢涓殑鍋忕Щ鍦板潃涓嶅悓锛屽簲璇ヤ娇鐢ㄥ姞杞藉悗鐨勫湴鍧�
155155
PIMAGE_BASE_RELOCATION pLoc = (PIMAGE_BASE_RELOCATION)((DWORD_PTR)NewBase
156156
+ pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress);
157-
while((pLoc->VirtualAddress + pLoc->SizeOfBlock) != 0) //开始扫描重定位表
157+
while((pLoc->VirtualAddress + pLoc->SizeOfBlock) != 0) //寮�濮嬫壂鎻忛噸瀹氫綅琛�
158158
{
159159
WORD *pLocData = (WORD *)((DWORD_PTR)pLoc + sizeof(IMAGE_BASE_RELOCATION));
160-
//计算本节需要修正的重定位项(地址)的数目
160+
//璁$畻鏈妭闇�瑕佷慨姝g殑閲嶅畾浣嶉」锛堝湴鍧�锛夌殑鏁扮洰
161161
int NumberOfReloc = (pLoc->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION))/sizeof(WORD);
162162
for( int i=0 ; i < NumberOfReloc; i++)
163163
{
164-
if( (DWORD)(pLocData[i] & 0xF000) == 0x00003000) //这是一个需要修正的地址
164+
if( (DWORD)(pLocData[i] & 0xF000) == 0x00003000) //杩欐槸涓�涓渶瑕佷慨姝g殑鍦板潃
165165
{
166-
// 举例:
166+
// 涓句緥锛�
167167
// pLoc->VirtualAddress = 0x1000;
168-
// pLocData[i] = 0x313E; 表示本节偏移地址0x13E处需要修正
168+
// pLocData[i] = 0x313E; 琛ㄧず鏈妭鍋忕Щ鍦板潃0x13E澶勯渶瑕佷慨姝�
169169
// 因此 pAddress = 基地址 + 0x113E
170-
// 里面的内容是 A1 ( 0c d4 02 10) 汇编代码是: mov eax , [1002d40c]
171-
// 需要修正1002d40c这个地址
170+
// 閲岄潰鐨勫唴瀹规槸 A1 ( 0c d4 02 10) 姹囩紪浠g爜鏄細 mov eax , [1002d40c]
171+
// 闇�瑕佷慨姝�1002d40c杩欎釜鍦板潃
172172
DWORD * pAddress = (DWORD *)((DWORD_PTR)NewBase + pLoc->VirtualAddress + (pLocData[i] & 0x0FFF));
173173
*pAddress += Delta;
174174
}
175175
}
176-
//转移到下一个节进行处理
176+
//杞Щ鍒颁笅涓�涓妭杩涜澶勭悊
177177
pLoc = (PIMAGE_BASE_RELOCATION)((DWORD)pLoc + pLoc->SizeOfBlock);
178178
}
179179
}
180180

181-
//填充引入地址表
181+
//濉厖寮曞叆鍦板潃琛�
182182
BOOL CMemLoadDll::FillRavAddress(void *pImageBase)
183183
{
184-
// 引入表实际上是一个 IMAGE_IMPORT_DESCRIPTOR 结构数组,全部是0表示结束
185-
// 数组定义如下:
184+
// 寮曞叆琛ㄥ疄闄呬笂鏄竴涓� IMAGE_IMPORT_DESCRIPTOR 缁撴瀯鏁扮粍锛屽叏閮ㄦ槸0琛ㄧず缁撴潫
185+
// 鏁扮粍瀹氫箟濡備笅锛�
186186
//
187-
// DWORD OriginalFirstThunk; // 0表示结束,否则指向未绑定的IAT结构数组
187+
// DWORD OriginalFirstThunk; // 0琛ㄧず缁撴潫锛屽惁鍒欐寚鍚戞湭缁戝畾鐨処AT缁撴瀯鏁扮粍
188188
// DWORD TimeDateStamp;
189189
// DWORD ForwarderChain; // -1 if no forwarders
190190
// DWORD Name; // 给出dll的名字
191-
// DWORD FirstThunk; // 指向IAT结构数组的地址(绑定后,这些IAT里面就是实际的函数地址)
191+
// DWORD FirstThunk; // 鎸囧悜IAT缁撴瀯鏁扮粍鐨勫湴鍧�(缁戝畾鍚庯紝杩欎簺IAT閲岄潰灏辨槸瀹為檯鐨勫嚱鏁板湴鍧�)
192192
unsigned long Offset = pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress ;
193193
if(Offset == 0) return TRUE; //No Import Table
194194
PIMAGE_IMPORT_DESCRIPTOR pID = (PIMAGE_IMPORT_DESCRIPTOR)((DWORD_PTR) pImageBase + Offset);
@@ -209,25 +209,25 @@ BOOL CMemLoadDll::FillRavAddress(void *pImageBase)
209209
else buf[i] = 0;
210210
HMODULE hDll = GetModuleHandle(buf);
211211
if(hDll == NULL)return FALSE; //NOT FOUND DLL
212-
//获取DLL中每个导出函数的地址,填入IAT
212+
//鑾峰彇DLL涓瘡涓鍑哄嚱鏁扮殑鍦板潃锛屽~鍏AT
213213
//每个IAT结构是 :
214214
// union { PBYTE ForwarderString;
215215
// PDWORD Function;
216216
// DWORD Ordinal;
217217
// PIMAGE_IMPORT_BY_NAME AddressOfData;
218218
// } u1;
219-
// 长度是一个DWORD ,正好容纳一个地址。
219+
// 闀垮害鏄竴涓狣WORD 锛屾濂藉绾充竴涓湴鍧�銆�
220220
for(i=0; ;i++)
221221
{
222222
if(pOriginalIAT[i].u1.Function == 0)break;
223223
FARPROC lpFunction = NULL;
224-
if(pOriginalIAT[i].u1.Ordinal & IMAGE_ORDINAL_FLAG) //这里的值给出的是导出序号
224+
if(pOriginalIAT[i].u1.Ordinal & IMAGE_ORDINAL_FLAG) //杩欓噷鐨勫�肩粰鍑虹殑鏄鍑哄簭鍙�
225225
{
226226
lpFunction = GetProcAddress(hDll, (LPCSTR)(pOriginalIAT[i].u1.Ordinal & 0x0000FFFF));
227227
}
228-
else //按照名字导入
228+
else //鎸夌収鍚嶅瓧瀵煎叆
229229
{
230-
//获取此IAT项所描述的函数名称
230+
//鑾峰彇姝AT椤规墍鎻忚堪鐨勫嚱鏁板悕绉�
231231
PIMAGE_IMPORT_BY_NAME pByName = (PIMAGE_IMPORT_BY_NAME)
232232
((DWORD_PTR)pImageBase + (DWORD)(pOriginalIAT[i].u1.AddressOfData));
233233
// if(pByName->Hint !=0)
@@ -248,54 +248,54 @@ BOOL CMemLoadDll::FillRavAddress(void *pImageBase)
248248
return TRUE;
249249
}
250250

251-
//CheckDataValide函数用于检查缓冲区中的数据是否有效的dll文件
251+
//CheckDataValide鍑芥暟鐢ㄤ簬妫�鏌ョ紦鍐插尯涓殑鏁版嵁鏄惁鏈夋晥鐨刣ll鏂囦欢
252252
//返回值: 是一个可执行的dll则返回TRUE,否则返回FALSE。
253-
//lpFileData: 存放dll数据的内存缓冲区
254-
//DataLength: dll文件的长度
253+
//lpFileData: 瀛樻斁dll鏁版嵁鐨勫唴瀛樼紦鍐插尯
254+
//DataLength: dll鏂囦欢鐨勯暱搴�
255255
BOOL CMemLoadDll::CheckDataValide(void* lpFileData, int DataLength)
256256
{
257-
//检查长度
257+
//妫�鏌ラ暱搴�
258258
if(DataLength < sizeof(IMAGE_DOS_HEADER)) return FALSE;
259259
pDosHeader = (PIMAGE_DOS_HEADER)lpFileData; // DOS头
260-
//检查dos头的标记
260+
//妫�鏌os澶寸殑鏍囪
261261
if(pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) return FALSE; //0x5A4D : MZ
262262

263-
//检查长度
263+
//妫�鏌ラ暱搴�
264264
if((DWORD)DataLength < (pDosHeader->e_lfanew + sizeof(IMAGE_NT_HEADERS32)) ) return FALSE;
265265
//取得pe头
266266
pNTHeader = (PIMAGE_NT_HEADERS32)( (DWORD_PTR)lpFileData + (DWORD_PTR)pDosHeader->e_lfanew); // PE头
267-
//检查pe头的合法性
267+
//妫�鏌e澶寸殑鍚堟硶鎬�
268268
if(pNTHeader->Signature != IMAGE_NT_SIGNATURE) return FALSE; //0x00004550 : PE00
269269
if((pNTHeader->FileHeader.Characteristics & IMAGE_FILE_DLL) == 0) //0x2000 : File is a DLL
270270
return FALSE;
271-
if((pNTHeader->FileHeader.Characteristics & IMAGE_FILE_EXECUTABLE_IMAGE) == 0) //0x0002 : 指出文件可以运行
271+
if((pNTHeader->FileHeader.Characteristics & IMAGE_FILE_EXECUTABLE_IMAGE) == 0) //0x0002 : 鎸囧嚭鏂囦欢鍙互杩愯
272272
return FALSE;
273273
if(pNTHeader->FileHeader.SizeOfOptionalHeader != sizeof(IMAGE_OPTIONAL_HEADER32)) return FALSE;
274274

275275

276276
//取得节表(段表)
277277
pSectionHeader = (PIMAGE_SECTION_HEADER)((DWORD_PTR)pNTHeader + sizeof(IMAGE_NT_HEADERS32));
278-
//验证每个节表的空间
278+
//楠岃瘉姣忎釜鑺傝〃鐨勭┖闂�
279279
for(int i=0; i< pNTHeader->FileHeader.NumberOfSections; i++)
280280
{
281281
if((pSectionHeader[i].PointerToRawData + pSectionHeader[i].SizeOfRawData) > (DWORD)DataLength)return FALSE;
282282
}
283283
return TRUE;
284284
}
285285

286-
//计算对齐边界
286+
//璁$畻瀵归綈杈圭晫
287287
int CMemLoadDll::GetAlignedSize(int Origin, int Alignment)
288288
{
289289
return (Origin + Alignment - 1) / Alignment * Alignment;
290290
}
291-
//计算整个dll映像文件的尺寸
291+
//璁$畻鏁翠釜dll鏄犲儚鏂囦欢鐨勫昂瀵�
292292
int CMemLoadDll::CalcTotalImageSize()
293293
{
294294
int Size;
295295
if(pNTHeader == NULL)return 0;
296-
int nAlign = pNTHeader->OptionalHeader.SectionAlignment; //段对齐字节数
296+
int nAlign = pNTHeader->OptionalHeader.SectionAlignment; //娈靛榻愬瓧鑺傛暟
297297

298-
// 计算所有头的尺寸。包括dos, coff, pe头 和 段表的大小
298+
// 璁$畻鎵�鏈夊ご鐨勫昂瀵搞�傚寘鎷琩os, coff, pe澶� 鍜� 娈佃〃鐨勫ぇ灏�
299299
Size = GetAlignedSize(pNTHeader->OptionalHeader.SizeOfHeaders, nAlign);
300300
// 计算所有节的大小
301301
for(int i=0; i < pNTHeader->FileHeader.NumberOfSections; ++i)
@@ -311,12 +311,12 @@ int CMemLoadDll::CalcTotalImageSize()
311311
}
312312
return Size;
313313
}
314-
//CopyDllDatas函数将dll数据复制到指定内存区域,并对齐所有节
315-
//pSrc: 存放dll数据的原始缓冲区
316-
//pDest:目标内存地址
314+
//CopyDllDatas鍑芥暟灏哾ll鏁版嵁澶嶅埗鍒版寚瀹氬唴瀛樺尯鍩燂紝骞跺榻愭墍鏈夎妭
315+
//pSrc: 瀛樻斁dll鏁版嵁鐨勫師濮嬬紦鍐插尯
316+
//pDest:鐩爣鍐呭瓨鍦板潃
317317
void CMemLoadDll::CopyDllDatas(void* pDest, void* pSrc)
318318
{
319-
// 计算需要复制的PE头+段表字节数
319+
// 璁$畻闇�瑕佸鍒剁殑PE澶�+娈佃〃瀛楄妭鏁�
320320
int HeaderSize = pNTHeader->OptionalHeader.SizeOfHeaders;
321321
int SectionSize = pNTHeader->FileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER);
322322
int MoveSize = HeaderSize + SectionSize;
@@ -329,18 +329,18 @@ void CMemLoadDll::CopyDllDatas(void* pDest, void* pSrc)
329329
if(pSectionHeader[i].VirtualAddress == 0 || pSectionHeader[i].SizeOfRawData == 0)continue;
330330
// 定位该节在内存中的位置
331331
void *pSectionAddress = (void *)((DWORD_PTR)pDest + pSectionHeader[i].VirtualAddress);
332-
// 复制段数据到虚拟内存
332+
// 澶嶅埗娈垫暟鎹埌铏氭嫙鍐呭瓨
333333
memmove((void *)pSectionAddress,
334334
(void *)((DWORD_PTR)pSrc + pSectionHeader[i].PointerToRawData),
335335
pSectionHeader[i].SizeOfRawData);
336336
}
337337

338-
//修正指针,指向新分配的内存
338+
//淇鎸囬拡锛屾寚鍚戞柊鍒嗛厤鐨勫唴瀛�
339339
//新的dos头
340340
pDosHeader = (PIMAGE_DOS_HEADER)pDest;
341341
//新的pe头地址
342342
pNTHeader = (PIMAGE_NT_HEADERS32)((DWORD_PTR)pDest + (DWORD_PTR)(pDosHeader->e_lfanew));
343343
//新的节表地址
344344
pSectionHeader = (PIMAGE_SECTION_HEADER)((DWORD_PTR)pNTHeader + sizeof(IMAGE_NT_HEADERS32));
345345
return ;
346-
}
346+
}

dll.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ class CMemLoadDll
2828
PIMAGE_DOS_HEADER pDosHeader;
2929
PIMAGE_NT_HEADERS32 pNTHeader;
3030
PIMAGE_SECTION_HEADER pSectionHeader;
31-
};
31+
};

dynCodeHelper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,4 @@ AutoEnableDynamicCodeGen::~AutoEnableDynamicCodeGen()
108108

109109
enabled = false;
110110
}
111-
}
111+
}

0 commit comments

Comments
 (0)