亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? winNT技術操作系統,國外開放的原代碼和LIUX一樣
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*++

Copyright (c) 1998-2001 Klaus P. Gerlicher

Module Name:

    main.c

Abstract:

    loader/translator for pIce LINUX

Environment:

    User mode only

Author:

    Klaus P. Gerlicher
	Reactos Port by Eugene Ingerman

Revision History:

    04-Aug-1998:	created
    15-Nov-2000:    general cleanup of source files

Copyright notice:

  This file may be distributed under the terms of the GNU Public License.

--*/

///////////////////////////////////////////////////////////////////////////////////
// includes
#include "stdinc.h"
#include <wchar.h>

///////////////////////////////////////////////////////////////////////////////////
// constant defines


///////////////////////////////////////////////////////////////////////////////////
// global variables
char SrcFileNames[2048][2048];
ULONG ulCurrentSrcFile = 0;

HANDLE debugger_file;

ULONG ulGlobalVerbose = 0;


///////////////////////////////////////////////////////////////////////////////////
// process_stabs()
//
///////////////////////////////////////////////////////////////////////////////////
void process_stabs(
	char* pExeName,	// name of exe
	HANDLE fileout,	// symbol file handle
	PIMAGE_SECTION_HEADER section, //Elf32_Shdr* pSHdr,
	int sectionHeadersSize, //int	nSHdrSize,
	void* p,		// ptr to memory where whole exe was read
	PSTAB_ENTRY pStab,	// ptr to stabs
	int nStabLen,		// size of stabs
	char* pStr,			// ptr to stabs strings
	int nStrLen,		// sizeof stabs strings
	char* pGlobals,		// ptr to global symbols
	int nGlobalLen,		// sizeof of globals
	char* pGlobalsStr,	// ptr to global strings
	int nGlobalStrLen)	// size of global strings
{
    unsigned i,strLen;
    int nOffset=0,nNextOffset=0;
    PSTAB_ENTRY pStabCopy = pStab;
    char* pName,szCurrentPath[2048];
	PICE_SYMBOLFILE_HEADER SymbolFileHeader;
	LPSTR pSlash,pDot;
	char temp[2048];
	char* pCopyExeName = temp;
	WCHAR tempstr[64];
	DWORD wrote;

    //printf("LOADER: enter process_stabs()\n");

	//get the name of the executable file
    memset((void*)&SymbolFileHeader,0,sizeof(SymbolFileHeader));
	SymbolFileHeader.magic = PICE_MAGIC;
	strcpy(temp,pExeName);
	pSlash = strrchr(temp,'\\');
	pDot = strchr(temp,'.');
	if(pDot)
	{
		*pDot = 0;
	}
	if(pSlash)
	{
		pCopyExeName = pSlash+1;
	}
	strLen = MultiByteToWideChar(CP_ACP, NULL, pCopyExeName, -1, tempstr, 64 );
	if( !strLen )
		printf("Cannot convert string to multibyte: %s\n", pCopyExeName );
	wcscpy(SymbolFileHeader.name,tempstr);

    for(i=0;i<(nStabLen/sizeof(STAB_ENTRY));i++)
    {
        pName = &pStr[pStabCopy->n_strx + nOffset];

#if 0
        //printf("LOADER: \n%.8x %.2x %.2x %.4x %.8x %s\n",
                pStabCopy->n_strx,
                pStabCopy->n_type,
                pStabCopy->n_other,
                pStabCopy->n_desc,
                pStabCopy->n_value,
                pName
                );
#endif
        switch(pStabCopy->n_type)
        {
            case N_UNDF:
                nOffset += nNextOffset;
                nNextOffset = pStabCopy->n_value;
                //printf("LOADER: changing string offset %x %x\n",nOffset,nNextOffset);
                break;
            case N_SO:
                if((strLen = strlen(pName)))
                {
                    if(pName[strLen-1]!='/')
                    {
                        if(strlen(szCurrentPath))
                        {
                            //printf("LOADER: ###########################################################################\n");
                            strcat(szCurrentPath,pName);
                            //printf("LOADER: changing source file %s\n",szCurrentPath);
                            strcpy(SrcFileNames[ulCurrentSrcFile++],szCurrentPath);
                            szCurrentPath[0]=0;
                        }
                        else
                        {
                            //printf("LOADER: ###########################################################################\n");
                            //printf("LOADER: changing source file %s\n",pName);
                            strcpy(SrcFileNames[ulCurrentSrcFile++],pName);
                        }
                    }
                    else
                        strcpy(szCurrentPath,pName);
                }
                else
                {
                    //printf("LOADER: END source file\n");
                    //printf("LOADER: ###########################################################################\n");
                }
                break;
/*            case N_SLINE:
                //printf("LOADER: code source line number #%u for addr. %x\n",pStabCopy->n_desc,pStabCopy->n_value);
                break;
            case N_DSLINE:
                //printf("LOADER: data source line number #%u for addr. %x\n",pStabCopy->n_desc,pStabCopy->n_value);
                break;
            case N_BSLINE:
                //printf("LOADER: BSS source line number #%u for addr. %x\n",pStabCopy->n_desc,pStabCopy->n_value);
                break;
            case N_GSYM:
                //printf("LOADER: global symbol %s @ addr. %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_BINCL:
                //printf("LOADER: include file %s\n",pName);
                break;
            case N_EINCL:
                break;
            case N_FUN:
                if(strlen(pName))
                    //printf("LOADER: function %s @ addr. %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                else
                    //printf("LOADER: text segment %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_PSYM:
                //printf("LOADER: parameter %s @ [EBP%+d] (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_RSYM:
                //printf("LOADER: register variable %s @ reg. %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_LBRAC:
                //printf("LOADER: lexical block %s @ reg. %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_RBRAC:
                //printf("LOADER: END of lexical block %s @ reg. %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_STSYM:
                //printf("LOADER: static variable %s @ %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_LCSYM:
                //printf("LOADER: BSS variable %s @ %x (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                break;
            case N_LSYM:
                if(pStabCopy->n_value)
                {
                    //printf("LOADER: stack variable %s @ [EBP%+d] (%x)\n",pName,pStabCopy->n_value,pStabCopy->n_desc);
                }
                else
                {
                    //printf("LOADER: global variable %s \n",pName);
                }
                break;
*/
        }

        pStabCopy++;
    }

	//printf("LOADER: SymbolFileHeader.ulSizeOfHeader= %x (%x)\n",nSHdrSize,(LPSTR)pSHdr-(LPSTR)p);
	//printf("LOADER: SymbolFileHeader.ulSizeOfGlobals = %x (%x)\n",nGlobalLen,(LPSTR)pGlobals-(LPSTR)p);
	//printf("LOADER: SymbolFileHeader.ulSizeOfGlobalsStrings = %x (%x)\n",nGlobalStrLen,(LPSTR)pGlobalsStr-(LPSTR)p);
	//printf("LOADER: SymbolFileHeader.ulSizeOfStabs = %x (%x)\n",nStabLen,(LPSTR)pStab-(LPSTR)p);
	//printf("LOADER: SymbolFileHeader.ulSizeOfStabsStrings = %x (%x)\n",nStrLen,(LPSTR)pStr-(LPSTR)p);

	SymbolFileHeader.ulOffsetToHeaders = sizeof(PICE_SYMBOLFILE_HEADER);
	SymbolFileHeader.ulSizeOfHeader = sectionHeadersSize;
	SymbolFileHeader.ulOffsetToGlobals = sizeof(PICE_SYMBOLFILE_HEADER)+sectionHeadersSize;
	SymbolFileHeader.ulSizeOfGlobals = nGlobalLen;
	SymbolFileHeader.ulOffsetToGlobalsStrings = sizeof(PICE_SYMBOLFILE_HEADER)+sectionHeadersSize+nGlobalLen;
	SymbolFileHeader.ulSizeOfGlobalsStrings = nGlobalStrLen;
	SymbolFileHeader.ulOffsetToStabs = sizeof(PICE_SYMBOLFILE_HEADER)+sectionHeadersSize+nGlobalLen+nGlobalStrLen;
	SymbolFileHeader.ulSizeOfStabs = nStabLen;
	SymbolFileHeader.ulOffsetToStabsStrings = sizeof(PICE_SYMBOLFILE_HEADER)+sectionHeadersSize+nGlobalLen+nGlobalStrLen+nStabLen;
	SymbolFileHeader.ulSizeOfStabsStrings = nStrLen;
    SymbolFileHeader.ulOffsetToSrcFiles = sizeof(PICE_SYMBOLFILE_HEADER)+sectionHeadersSize+nGlobalLen+nGlobalStrLen+nStabLen+nStrLen;
    SymbolFileHeader.ulNumberOfSrcFiles = ulCurrentSrcFile;

	printf("sectionHeaderSize: %ld, nGlobalLen: %ld, nGlobalStrLen: %ld, nStabLen: %ld, "
			"nStrLen: %ld, ulCurrentSrcFile: %ld, ulOffsetToStabs: %ld\n",
			sectionHeadersSize, nGlobalLen, nGlobalStrLen,
			nStabLen, nStrLen, ulCurrentSrcFile, SymbolFileHeader.ulOffsetToStabs);

	WriteFile(fileout,&SymbolFileHeader,sizeof(PICE_SYMBOLFILE_HEADER),&wrote, NULL);
	WriteFile(fileout,section,sectionHeadersSize,&wrote, NULL);
	WriteFile(fileout,pGlobals,nGlobalLen,&wrote, NULL);
	WriteFile(fileout,pGlobalsStr,nGlobalStrLen,&wrote, NULL);
	WriteFile(fileout,pStab,nStabLen,&wrote, NULL);
	WriteFile(fileout,pStr,nStrLen,&wrote, NULL);

    for(i=0;i<ulCurrentSrcFile;i++)
    {
        HANDLE file;
        int len;
        PVOID pFile;
        PICE_SYMBOLFILE_SOURCE pss;

		file = CreateFile(SrcFileNames[i],GENERIC_READ , 0, NULL, OPEN_EXISTING, 0, 0);
		//printf("Trying To Open: %s, result: %x\n", SrcFileNames[i], file );


		if( file == INVALID_HANDLE_VALUE ){
			//let's try win format drive:/file
			char srctmp[2048];
			strcpy(srctmp, SrcFileNames[i] );
			if(strncmp(srctmp,"//",2)==0){
				*(srctmp) = *(srctmp+2);
				*(srctmp+1) = ':';
				*(srctmp+2) = '/';
				file = CreateFile(srctmp,GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
				//printf("Trying To Open: %s, handle: %x\n", srctmp, file );
				if( file == INVALID_HANDLE_VALUE )
					printf("Can't open file: %s\n", srctmp );
			}
		}
        if(file != INVALID_HANDLE_VALUE)
        {
            //printf("LOADER: [%u] opened %s as FD %x\n",i,SrcFileNames[i],file);

            len = SetFilePointer(file,0,NULL,FILE_END);
            //printf("LOADER: length = %d\n",(int)len);

            SetFilePointer(file,0,NULL,FILE_BEGIN);

            strcpy(pss.filename,SrcFileNames[i]);
            pss.ulOffsetToNext = len+sizeof(PICE_SYMBOLFILE_SOURCE);

            pFile = malloc(len+1);
            //printf("LOADER: memory for file @ %x\n",pFile);
            if(pFile)
            {
                //printf("LOADER: reading file...\n");
                ReadFile(file,pFile,len+1,&wrote,NULL);
				//printf("read: %d, error: %d\n", wrote, GetLastError());
                WriteFile(fileout,&pss,sizeof(PICE_SYMBOLFILE_SOURCE),&wrote, NULL);
                WriteFile(fileout,pFile,len,&wrote, NULL);
                //printf("LOADER: writing file...%d\n%s\n",wrote,pFile );
                free(pFile);
            }

            CloseHandle(file);
        }

    }

    //printf("LOADER: leave process_stabs()\n");
}

///////////////////////////////////////////////////////////////////////////////////
// find_stab_sections()
//
///////////////////////////////////////////////////////////////////////////////////
void find_stab_sections(void* p,PIMAGE_SECTION_HEADER section, unsigned cSections,
							  PSTAB_ENTRY* ppStab,int* pLen,char** ppStr,int* pnStabStrLen)
{
	unsigned i;
    //printf("LOADER: enter find_stab_sections()\n");
    *ppStab = 0;
    *ppStr = 0;

	for ( i=1; i <= cSections; i++, section++ )
    {

		if(strcmp(section->Name,".stab") == 0)
        {
            *ppStab = (PSTAB_ENTRY)((int)p + section->PointerToRawData);
            *pLen = section->SizeOfRawData;
            printf("LOADER: .stab @ %x (offset %x) len = %x\n",*ppStab,section->PointerToRawData,section->SizeOfRawData);
        }
        else if(strncmp(section->Name,".stabstr",strlen(".stabstr")) == 0)
        {
            *ppStr = (char*)((int)p + section->PointerToRawData);
			*pnStabStrLen = section->SizeOfRawData;
            printf("LOADER: .stabstr @ %x (offset %x) len = %x\n",*ppStab,section->PointerToRawData,section->SizeOfRawData);
        }
    }

    //printf("LOADER: leave find_stab_sections()\n");
}

///////////////////////////////////////////////////////////////////////////////////
// process_pe()
//
///////////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区二区三区视频| 一区二区三区欧美日韩| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲精品国产视频| 91久久精品一区二区三区| 亚洲午夜精品一区二区三区他趣| 欧美综合色免费| 奇米影视一区二区三区小说| 精品美女一区二区三区| 成人视屏免费看| 亚洲精品一二三区| 日韩一区二区免费视频| 国产成人在线视频网址| 亚洲人成亚洲人成在线观看图片 | 成人免费精品视频| 亚洲精品午夜久久久| 欧美精品视频www在线观看 | 成人激情免费视频| 一级精品视频在线观看宜春院| 在线播放日韩导航| 国产精品一品视频| 亚洲福利一区二区| 国产精品网站导航| 欧美日韩亚洲丝袜制服| 国产一区二区三区日韩| 亚洲美女在线国产| 久久免费的精品国产v∧| 一本到三区不卡视频| 激情五月播播久久久精品| 亚洲免费三区一区二区| 26uuu色噜噜精品一区二区| 色呦呦国产精品| 国产黄色精品视频| 日韩电影在线一区二区三区| 国产精品超碰97尤物18| 欧美一区二区二区| 色先锋久久av资源部| 国产麻豆精品久久一二三| 天天影视涩香欲综合网| 国产精品久久久久久久久免费樱桃| 91精品国产高清一区二区三区蜜臀| 97久久精品人人爽人人爽蜜臀 | 国产日韩欧美制服另类| 欧美一区二区在线观看| 在线亚洲一区二区| 国产成人精品在线看| 奇米精品一区二区三区在线观看一 | 亚洲欧美国产高清| 国产女主播一区| 欧美电影免费观看高清完整版在线观看 | 色嗨嗨av一区二区三区| 国产精品18久久久久久vr| 五月天视频一区| 亚洲欧美日韩电影| 国产精品视频第一区| 欧美精品一区二区高清在线观看| 欧美性色欧美a在线播放| av高清不卡在线| 成人精品免费看| 国产高清一区日本| 国产一区二区三区在线看麻豆| 日本vs亚洲vs韩国一区三区二区| 亚洲成a天堂v人片| 亚洲成人动漫在线观看| 一区二区三区在线播放| 亚洲欧美日韩国产综合在线| 中文字幕日韩精品一区| 中文字幕欧美日韩一区| 久久精品一区二区三区四区| 久久综合九色综合97婷婷| 日韩欧美一区在线观看| 日韩视频免费观看高清在线视频| 在线电影欧美成精品| 欧美日韩国产大片| 欧美精品v国产精品v日韩精品| 欧美视频日韩视频| 欧美日韩久久不卡| 欧美美女直播网站| 91精品国产综合久久福利| 欧美一级二级三级蜜桃| 精品欧美黑人一区二区三区| 日韩精品专区在线| 久久女同互慰一区二区三区| 久久久99久久| 国产精品狼人久久影院观看方式| 国产精品视频一区二区三区不卡| 国产精品久久久久久久裸模| 亚洲摸摸操操av| 日韩精品欧美精品| 裸体健美xxxx欧美裸体表演| 国产在线看一区| 高清免费成人av| 欧美综合视频在线观看| 欧美精品乱码久久久久久 | 国内精品国产成人国产三级粉色 | 日本不卡一区二区| 九九精品视频在线看| 成人综合在线网站| 在线观看av一区| 91精品国产色综合久久不卡电影| 久久综合视频网| 亚洲欧洲在线观看av| 亚洲国产精品一区二区www在线| 卡一卡二国产精品| 成人av免费在线观看| 欧美日韩国产123区| 久久久久久免费毛片精品| 136国产福利精品导航| 午夜视频在线观看一区二区三区| 国产一区视频导航| 99re66热这里只有精品3直播| 91精品国产欧美日韩| 国产香蕉久久精品综合网| 亚洲一卡二卡三卡四卡无卡久久| 日本亚洲免费观看| 99视频精品全部免费在线| 91精品国产91综合久久蜜臀| 国产精品久久久久影视| 蜜桃视频在线观看一区| 91欧美一区二区| 亚洲精品在线免费观看视频| 亚洲乱码国产乱码精品精的特点 | 欧美一级在线观看| 亚洲桃色在线一区| 国产乱码精品一区二区三区五月婷 | 亚洲一区二区视频在线| 国产精品一线二线三线精华| 欧美亚洲高清一区二区三区不卡| 久久你懂得1024| 奇米在线7777在线精品| 色婷婷av一区二区三区大白胸| 欧美精品一区二区久久婷婷| 亚洲v日本v欧美v久久精品| 粉嫩久久99精品久久久久久夜| 欧美丰满少妇xxxbbb| 亚洲精品免费在线| 成人免费视频视频| 久久久久久久性| 亚洲观看高清完整版在线观看 | 国产麻豆午夜三级精品| 欧美日韩视频在线一区二区| 亚洲女厕所小便bbb| 岛国精品在线播放| 亚洲精品在线电影| 日韩电影在线观看电影| 欧美在线观看一区二区| 国产精品国产三级国产aⅴ原创 | 亚洲午夜激情网页| 一本大道av伊人久久综合| 久久人人超碰精品| 精品一区二区久久| 日韩免费视频一区二区| 日本不卡一二三区黄网| 欧美一区二区三区在| 日韩av一级电影| 91精品国产综合久久蜜臀| 五月天激情综合| 精品视频全国免费看| 亚洲精品日日夜夜| 在线免费视频一区二区| 一区二区三区精品在线| 欧美性大战久久| 亚洲最大的成人av| 欧洲中文字幕精品| 一区二区三区在线高清| 欧美亚男人的天堂| 亚洲国产日韩精品| 欧美日韩精品一区二区三区四区 | 亚洲欧洲日产国码二区| 99精品在线免费| 一区二区三区四区视频精品免费| 色欧美片视频在线观看| 亚洲精品免费视频| 欧美色图在线观看| 日韩精品三区四区| 精品久久久久久无| 国产999精品久久| 亚洲日本在线看| 欧美最新大片在线看 | 亚洲一区二区三区四区的| 欧美私人免费视频| 午夜精品一区二区三区三上悠亚| 欧美一级xxx| 国产精品911| 亚洲激情图片小说视频| 日韩一区二区三区四区五区六区| 久久91精品久久久久久秒播| 国产喂奶挤奶一区二区三区| 91色乱码一区二区三区| 亚洲国产精品久久久男人的天堂| 日韩午夜激情视频| 懂色av一区二区三区免费看| 亚洲综合在线第一页| 精品久久久久久久久久久久包黑料| 国产盗摄一区二区| 一区二区三区在线免费观看| 欧美一区二区成人6969| av在线一区二区| 蜜桃视频一区二区三区在线观看| 中文一区在线播放|