dll mù mǎ jiē mì
xiāng xìn jīng cháng wán mù mǎ de péng yǒu men dū huì zhī dào yī xiē mù mǎ de tè xìng, yě huì yòu zì jǐ zuì xǐ 'ài de mù mǎ, bù guò, hěn duō péng yǒu yǐ rán bù zhī dào jìn nián xīng qǐ de “ dll mù mǎ ” wèihé wù。 shénme shì“ dll mù mǎ ” ní? tā yǔ yī bān de mù mǎ yòu shénme bù tóng?
yī、 cóng dll jì shù shuō qǐ
yào liǎo jiě dll mù mǎ , jiù bì xū zhī dào zhè gè“ dll” shì shénme yì sī, suǒ yǐ, ràng wǒ men zhuī sù dào jǐ nián qián, dos xì tǒng dà xíng qí dào de rì zǐ lǐ。 zài nà shí hòu, xiě chéng xù shì yī jiàn fán suǒ de shì qíng, yīn wéi měi gè chéng xù de dài mǎ dōushì dú lì de, yòu shí hòu wèile shí xiàn yī gè gōng néng, jiù yào wèicǐ xiě hěn duō dài mǎ, hòu lái suí zhe biān chéng jì shù fā zhǎn, chéng xù yuán men bǎ hěn duō cháng yòng de dài mǎ jí hé( tōng yòng dài mǎ) fàng jìn yī gè dú lì de wén jiàn lǐ, bìng bǎ zhè gè wén jiàn chēng wéi“ kù”( library), zài xiě chéng xù de shí hòu, bǎ zhè gè kù wén jiàn jiā rù biān yì qì, jiù néng shǐ yòng zhè gè kù bāo hán de suǒ yòu gōng néng 'ér bù bì zì jǐ zài qù xiě yī dà duī dài mǎ, zhè gè jì shù bèi chēng wéi“ jìng tài liàn jiē”( staticlink)。 jìng tài liàn jiē jì shù ràng láolèi de chéng xù yuán sōng liǎo kǒu qì, yī qiē sì hū dōuhěn měi hǎo。 kě shì shì shí zhèng míng, měi hǎo de shì wù bù huì cún zài tài jiǔ, yīn wéi jìng tài liàn jiē jiù xiàng yī gè cū lǔ de tuī xiāo yuán, bù guǎn nǐ xiǎng bù xiǎng yào xuān chuán dān, tādōu quán bù sài dào nǐ de shǒu shàng lái。 xiě yī gè chéng xù zhǐ xiǎng yòng dào yī gè kù wén jiàn bāo hán de mǒu gè tú xíng xiào guǒ, jiù yīn wéi zhè gè, nǐ bù dé bù bǎ zhè gè kù wén jiàn xié dài de suǒ yòu de tú xíng xiào guǒ dū jiā rù chéng xù, liú zhe tā men dāng huā píng bǎi shè, zhè dǎo méi shí me zhòng yào, kě shì zhè xiē huā píng què bǎ dào lù dū zǔsè liǎo héng héng jìng tài liàn jiē jì shù ràng zuì zhōng de chéng xù chéng liǎo dà kuài tóu, yīn wéi biān yì qì bǎ zhěng gè kù wén jiàn yě suàn jìn qù liǎo。
shí dài zài fā zhǎn, jìng tài liàn jiē jì shù yóu yú tiān shēng de bì duān, bù néng mǎn zú chéng xù yuán de yuàn wàng, rén men kāi shǐ xún zhǎo yī zhǒng gèng hǎo de fāng fǎ lái jiě jué dài mǎ chóngfù de nán tí。 hòu lái, windows xì tǒng chū xiàn liǎo, shí dài de fēn shuǐ lǐng zhōng yú chū xiàn。 windows xì tǒng shǐ yòng yī zhǒng xīn de liàn jiē jì shù, zhè zhǒng bèi chēng wéi“ dòng tài liàn jiē”( dynamiclink) de xīn jì shù tóng yàng yě shì shǐ yòng kù wén jiàn, wēi ruǎn chēng tā men wéi“ dòng tài liàn jiē kù” héng héng dynamiclinklibrary, dll de míng zì jiù shì zhè yàng lái de。 dòng tài liàn jiē běn shēn hé jìng tài liàn jiē méi shí me qū bié, yě shì bǎ tōng yòng dài mǎ xiě jìn yī xiē dú lì wén jiàn lǐ, dàn shì zài biān yì fāng miàn, wēi ruǎn rào liǎo gè juàn zǐ, bìng méi yòu cǎi qǔ bǎ kù wén jiàn jiā jìn chéng xù de fāng fǎ, ér shì bǎ kù wén jiàn zuò chéng yǐ jīng biān yì hǎo de chéng xù wén jiàn, gěi tā men kāi gè jiāo huàn shù jù de jiē kǒu, chéng xù yuán xiě chéng xù de shí hòu, yī dàn yào shǐ yòng mǒu gè kù wén jiàn de yī gè gōng néng hán shù, xì tǒng jiù bǎ zhè gè kù wén jiàn diào rù nèi cún, lián jiē shàng zhè gè chéng xù zhàn yòu de rèn wù jìn chéng, rán hòu zhí xíng chéng xù yào yòng de gōng néng hán shù, bìng bǎ jiēguǒ fǎn huí gěi chéng xù xiǎn shì chū lái, zài wǒ men kàn lái, jiù xiàng shì chéng xù zì jǐ dài yòu de gōng néng yī yàng。 wán chéng xū yào de gōng néng hòu, zhè gè dll tíng zhǐ yùn xíng, zhěng gè diào yòng guò chéng jié shù。 wēi ruǎn ràng zhè xiē kù wén jiàn néng bèi duō gè chéng xù diào yòng, shí xiàn liǎo bǐ jiào wán měi de gòng xiǎng, chéng xù yuán wú lùn yào xiě shénme chéng xù, zhǐ yào zài dài mǎ lǐ jiā rù duì xiāng guān dll de diào yòng shēng míng jiù néng shǐ yòng tā de quán bù gōng néng。 zuì zhòng yào de shì, dll jué duì bù huì ràng nǐ duō ná yī gè huā píng, nǐ yào shénme tā jiù gěi nǐ shénme, nǐ bù yào de dōng xī tā cái bù huì gěi nǐ。 zhè yàng, xiě chū lái de chéng xù jiù bù néng zài xié dài yī dà duī lā jī liǎo héng héng jué duì bù huì ràng nǐ bǎ chī shèng de dōng xī dài huí jiā, fǒu zé fá kuǎn, zhè shì zì zhù cān。
dll jì shù de dàn shēng, shǐ biān xiě chéng xù biàn chéng yī jiàn jiǎn dān de shì qíng, windows wèiwǒ men tí gōng liǎo jǐ qiān gè hán shù jiē kǒu, zú yǐ mǎn zú dà duō shù chéng xù yuán de xū yào。 ér qiě, windows xì tǒng zì shēn jiù shì yóu jǐ qiān gè dll wén jiàn zǔ chéng, zhè xiē dll xiāng hù fú chí, zǔ chéng liǎo qiáng dà de windows xì tǒng。 rú guǒ windows shǐ yòng jìng tài liàn jiē jì shù, tā de tǐ jī huì yòu duō dà? wǒ bù gǎn xiǎng。
èr、 yìng yòng chéng xù jiē kǒu api
shàng miàn wǒ men duì dll jì shù zuò liǎo gè dà gài fēn xī, zài lǐ miàn wǒ tí dào liǎo“ jiē kǒu”, zhè yòu shì shénme ní? yīn wéi dll bù néng xiàng jìng tài kù wén jiàn nà yàng sài jìn chéng xù lǐ, suǒ yǐ, rú hé ràng chéng xù zhī dào shí xiàn gōng néng de dài mǎ hé wén jiàn chéng liǎo wèn tí, wēi ruǎn jiù wéi dll jì shù zuò liǎo biāo zhǔn guī fàn, ràng yī gè dll wén jiàn xiàng nǎi lào yī yàng kāi liǎo xǔ duō xiǎo dòng, měi gè dòng kǒu dū zhù míng lǐ miàn cún fàng de gōng néng de míng zì, chéng xù zhǐ yào gēn jù biāo zhǔn guī fàn zhǎo dào xiāng guān dòng kǒu jiù kě yǐ qǔ dé tā yào de měi wèi liǎo, zhè gè dòng kǒu jiù shì“ yìng yòng chéng xù jiē kǒu”( applicationprogramminginterface), měi gè dll dài de jiē kǒu dōubù xiāng tóng, jìn zuì dà kě néng de jiǎn shǎo liǎo dài mǎ de chóngfù。 yòng steven de yī jù huà: api jiù shì yī gè gōng jù xiāng, nǐ gēn jù xū yào qǔ chū luó sī dāo、 bān shǒu, yòng wán hòu zài bǎ tā men fàng huí yuán chù。 zài windows lǐ, zuì jī běn de 3 gè dll wén jiàn shì kernel32.dll、 user32.dll、 gdi32.dll。 tā men gòng tóng gòu chéng liǎo jī běn de xì tǒng kuàng jià。
sān、 dll yǔ mù mǎ
dll shì biān yì hǎo de dài mǎ, yǔ yī bān chéng xù méi shí me dà chā bié, zhǐ shì tā bù néng dú lì yùn xíng, xū yào chéng xù diào yòng。 nà me, dll yǔ mù mǎ néng chě shàng shí me guān xì ní? rú guǒ nǐ xué guò biān chéng bìng qiě xiě guò dll, jiù huì fā xiàn, qí shí dll de dài mǎ hé qí tā chéng xù jīhū méi shí me liǎng yàng, jǐn jǐn shì jiē kǒu hé qǐ dòng mó shì bù tóng, zhǐ yào gǎi dòng yī xià dài mǎ rù kǒu, dll jiù biàn chéng yī gè dú lì de chéng xù liǎo。 dāng rán, dll wén jiàn shì méi yòu chéng xù luó ji de, zhè lǐ bìng bù shì shuō dll=exe, bù guò, yǐ rán kě yǐ bǎ dll kàn zuò quē shǎo liǎo main rù kǒu de exe, dll dài de gè gè gōng néng hán shù kě yǐ kàn zuò yī gè chéng xù de jǐ gè hán shù mó kuài。 dll mù mǎ jiù shì bǎ yī gè shí xiàn liǎo mù mǎ gōng néng de dài mǎ, jiā shàng yī xiē tè shū dài mǎ xiě chéng dll wén jiàn, dǎo chū xiāng guān de api, zài bié rén kàn lái, zhè zhǐ shì yī gè pǔ tōng de dll, dàn shì zhè gè dll què xié dài liǎo wán zhěng de mù mǎ gōng néng, zhè jiù shì dll mù mǎ de gài niàn。 yě xǔ yòu rén huì wèn, jì rán tóng yàng de dài mǎ jiù kě yǐ shí xiàn mù mǎ gōng néng, nà me zhí jiē zuò chéng xù jiù kě yǐ, wèishénme hái yào duō cǐ yī jǔ xiě chéng dll ní? zhè shì wèile yǐn cáng, yīn wéi dll yùn xíng shí shì zhí jiē guà zài diào yòng tā de chéng xù de jìn chéng lǐ de, bìng bù huì lìng wài chǎn shēng jìn chéng, suǒ yǐ xiāng duì yú chuán tǒng exe mù mǎ lái shuō, tā hěn nán bèi chá dào。
sì、 dll de yùn xíng
suī rán dll bù néng zì jǐ yùn xíng, kě shì windows zài jiā zài dll de shí hòu, xū yào yī gè rù kǒu hán shù, jiù rú tóng exe de main yī yàng, fǒu zé xì tǒng wú fǎ yǐn yòng dll。 suǒ yǐ gēn jù biān xiě guī fàn, windows bì xū chá zhǎo bìng zhí xíng dll lǐ de yī gè hán shù dllmain zuò wéi jiā zài dll de yǐ jù, zhè gè hán shù bù zuò wéi api dǎo chū, ér shì nèi bù hán shù。 dllmain hán shù shǐ dll dé yǐ bǎo liú zài nèi cún lǐ, yòu de dll lǐ miàn méi yòu dllmain hán shù, kě shì yǐ rán néng shǐ yòng, zhè shì yīn wéi windows zài zhǎo bù dào dllmain de shí hòu, huì cóng qí tā yùn xíng kù zhōng zhǎo yī gè bù zuò rèn hé cāo zuò de quē shěng dllmain hán shù qǐ dòng zhè gè dll shǐ tā néng bèi zài rù, bìng bù shì shuō dll kě yǐ fàng qì dllmain hán shù。
wǔ、 dll mù mǎ jì shù fēn xī
dào liǎo zhè lǐ, nín yě xǔ huì xiǎng, jì rán dll mù mǎ yòu nà me duō hǎo chù, yǐ hòu xiě mù mǎdōu cǎi yòng dll fāng shì bù jiù hǎo liǎo má? huà suī rán shì zhè me shuō méi cuò, dàn shì dll mù mǎ bìng bù shì yī xiē rén xiǎng xiàng de nà me róng yì xiě de。 yào xiě yī gè néng yòng de dll mù mǎ , nǐ xū yào liǎo jiě gèng duō zhī shí。
1. mù mǎ de zhù tǐ
qiān wàn bié bǎ mù mǎ mó kuài xiěde zhēn de xiàng gè api kù yī yàng, zhè bù shì kāi fā winapi。 dll mù mǎ kě yǐ dǎo chū jǐ gè fǔ zhù hán shù, dàn shì bì xū yòu yī gè guò chéng fù zé zhù yào zhí xíng dài mǎ, fǒu zé zhè gè dll zhǐ néng shì yī duī líng suì api hán shù, bié tí gōng zuò liǎo。
rú guǒ shè jí yī xiē tōng yòng dài mǎ, kě yǐ zài dll lǐ xiě yī xiē nèi bù hán shù, gōng zì jǐ de dài mǎ shǐ yòng, ér bù shì bǎ suǒ yòu dài mǎ dū kāi fàng chéng jiē kǒu, zhè yàng tā zì jǐ běn shēn dū nán diào yòng liǎo, gèng bù kě néng fā huī zuò yòng。
dll mù mǎ de biāo zhǔn zhí xíng rù kǒu wéi dllmain, suǒ yǐ bì xū zài dllmain lǐ xiě hǎo dll mù mǎ yùn xíng de dài mǎ, huò zhě zhǐ xiàng dll mù mǎ de zhí xíng mó kuài。
2. dòng tài qiàn rù jì shù
windows zhōng, měi gè jìn chéng dōuyòu zì jǐ de sī yòu nèi cún kōng jiān, bié de jìn chéng shì bù yǔn xǔ duì zhè gè sī rén lǐng dì jìn xíng cāo zuò de, dàn shì, shí jì shàng wǒ men réng rán kě yǐ lì yòng zhǒng zhǒng fāng fǎ jìn rù bìng cāo zuò jìn chéng de sī yòu nèi cún, zhè jiù shì dòng tài qiàn rù, tā shì jiāng zì jǐ de dài mǎ qiàn rù zhèng zài yùn xíng de jìn chéng zhōng de jì shù。 dòng tài qiàn rù yòu hěn duō zhǒng, zuì cháng jiàn de shì gōu zǐ、 api yǐ jí yuǎn chéng xiàn chéng jì shù, xiàn zài de dà duō shù dll mù mǎ dū cǎi yòng yuǎn chéng xiàn chéng jì shù bǎ zì jǐ guà zài yī gè zhèng cháng xì tǒng jìn chéng zhōng。 qí shí dòng tài qiàn rù bìng bù shǎo jiàn, luó jì de mouseware qū dòng jiù guà zhe měi yī gè xì tǒng jìn chéng -_-
yuǎn chéng xiàn chéng jì shù jiù shì tōng guò zài lìng yī gè jìn chéng zhōng chuàng jiàn yuǎn chéng xiàn chéng( remotethread) de fāng fǎ jìn rù nà gè jìn chéng de nèi cún dì zhǐ kōng jiān。 zài dll mù mǎ de fàn chóu lǐ, zhè gè jì shù yě jiào zuò“ zhù rù”, dāng zài tǐ zài nà gè bèi zhù rù de jìn chéng lǐ chuàng jiàn liǎo yuǎn chéng xiàn chéng bìng mìng lìng tā jiā zài dll shí, mù mǎ jiù guà shàng qù zhí xíng liǎo, méi yòu xīn jìn chéng chǎn shēng, yào xiǎng ràng mù mǎ tíng zhǐ wéi yòu ràng guà jiē zhè gè mù mǎ dll de jìn chéng tuì chū yùn xíng。 dàn shì, hěn duō shí hòu wǒ men zhǐ néng shù shǒu wú cè héng héng tā hé explorer.exe guà zài yī qǐ liǎo, nǐ què dìng yào guān bì windows má?
3. mù mǎ de qǐ dòng
yòu rén yě xǔ huì pò bù jí dài de shuō, zhí jiē bǎ zhè gè dll jiā rù xì tǒng qǐ dòng xiàng mù bù jiù kě yǐ liǎo。 dá 'àn shì no, qián miàn shuō guò, dll bù néng dú lì yùn xíng, suǒ yǐ wú fǎ zài qǐ dòng xiàng mù lǐ zhí jiē qǐ dòng tā。 yào xiǎng ràng mù mǎ páo qǐ lái, jiù xū yào yī gè exe shǐ yòng dòng tài qiàn rù jì shù ràng dll dā shàng qí tā zhèng cháng jìn chéng de chē, ràng bèi qiàn rù de jìn chéng diào yòng zhè gè dll de dllmain hán shù, jī fā mù mǎ yùn xíng, zuì hòu qǐ dòng mù mǎ de exe jié shù yùn xíng, mù mǎ qǐ dòng wán bì。
qǐ dòng dll mù mǎ de exe shì gè zhòng yào juésè, tā bèi chēng wéi loader, rú guǒ méi yòu loader, dll mù mǎ jiù shì pò làn yī duī, yīn cǐ, yī gè suàn dé shàng chéng shú de dll mù mǎ huì xiǎng bàn fǎ bǎo hù tā de loader bù huì nà me róng yì bèi huǐ miè。 jì dé láng bèi wéi jiān de gù shì má? dll mù mǎ jiù shì pá zài láng loader shàng de bèi。
loader kě yǐ shì duō zhǒng duō yàng de, windows de rundll32.exe yě bèi yī xiē dll mù mǎ yòng lái zuò liǎo loader, zhè zhǒng mù mǎ yī bān bù dài dòng tài qiàn rù jì shù, tā zhí jiē guà zhe rundll32 jìn chéng yùn xíng, yòng rundll32 de fāng fǎ( rundll32.exe[dll míng ],[ hán shù ][ cān shù ]) xiàng diào yòng api yī yàng qù yǐn yòng zhè gè dll de qǐ dòng hán shù jī fā mù mǎ mó kuài kāi shǐ zhí xíng, jí shǐ nǐ shā liǎo rundll32, mù mǎ běn tǐ hái shì zài de, yī gè zuì cháng jiàn de lì zǐ jiù shì 3721 zhōng wén shí míng, suī rán tā bù shì mù mǎ。
zhù cè biǎo de appinit_dlls jiàn yě bèi yī xiē mù mǎ yòng lái qǐ dòng zì jǐ, rú qiú zhí xìn bìng dú。 lì yòng zhù cè biǎo qǐ dòng, jiù shì ràng xì tǒng zhí xíng dllmain lái dá dào qǐ dòng mù mǎ de mùdì。 yīn wéi tā shì kernel diào rù de, duì zhè gè dll de wěn dìng xìng yòu hěn dà yào qiú, shāo yòu cuò wù jiù huì dǎo zhì xì tǒng bēng kuì, suǒ yǐ hěn shǎo kàn dào zhè zhǒng mù mǎ。
yòu yī xiē gèng fù zá diǎn de dll mù mǎ tōng guò svchost.exe qǐ dòng, zhè zhǒng dll mù mǎ bì xū xiě chéng nt-service, rù kǒu hán shù shì servicemain, yī bān hěn shǎo jiàn, dàn shì zhè zhǒng mù mǎ de yǐn bì xìng yě bù cuò, ér qiě loader yòu bǎo zhàng。
4. qí tā
dào zhè lǐ dà jiā yě yìng gāi duì dll mù mǎ yòu gè liǎo jiě liǎo, shì bù shì hěn xiǎng xiě yī gè? bié jí, bù zhī dào dà jiā xiǎng guò méi yòu, jì rán dll mù mǎ zhè me hǎo, wèishénme dào xiàn zài néng zhǎo dào de dll mù mǎ liáo liáo wú jǐ? xiàn zài ràng wǒ lái pō lěng shuǐ, zuì zhòng yào de yuán yīn zhǐ yòu yī gè: yóu yú dll mù mǎ guà zhe xì tǒng jìn chéng yùn xíng, rú guǒ tā běn shēn xiěde bù hǎo, lì rú méi yòu fáng zhǐ yùn xíng cuò wù de dài mǎ huò zhě méi yòu yán gé guī fàn yòng hù de shū rù, dll jiù huì chū cuò bēng kuì。 bié jǐn zhāng, yī bān de exe yě shì zhè yàng wán dàn de, dàn shì dll bēng kuì huì dǎo zhì tā guà zhe de chéng xù gēn zhe zāo yāng, bié wàng jì tā guà jiē de shì xì tǒng jìn chéng 'ò, jié jú jiù shì …… cǎn bù rěn dǔ。 suǒ yǐ xiě yī gè néng gōng bù de dll mù mǎ , zài pái cuò jiǎn chá fāng miàn zuò de gōng zuò yào bǐ yī bān de exe mù mǎ duō, xiěde duō liǎo zì jǐ dū fán zào……
liù、 dll mù mǎ de fā xiàn hé chá shā
jīng cháng kàn kàn qǐ dòng xiàng yòu méi yòu duō chū mò míng qí miào de xiàng mù, zhè shì loader de suǒ zài, zhǐ yào shā liǎo láng, bèi jiù bù néng zài kuáng liǎo。 ér dll mù mǎ běn tǐ bǐ jiào nán fā xiàn, xū yào nǐ yòu yī dìng biān chéng zhī shí hé fēn xī néng lì, zài loader lǐ chá zhǎo dll míng chēng, huò zhě cóng jìn chéng lǐ kàn duō guà jiē liǎo shénme mò shēng de dll, kě shì duì xīn shǒu lái shuō…… zǒng zhī jiù shì bǐ jiào nán 'ā bǐ jiào nán, suǒ yǐ, zuì jiǎn dān de fāng fǎ: shā dú ruǎn jiàn hé fáng huǒ qiáng( bù shì wàn néng yào, qièjì cháng qī fú yòng)。 |