软件保护壳技术专题 - 加密引入表

 秒速赛车     |      2019-12-16 09:32

  正在IMAGE_NT_HEADERS机合中的OptionalHeader字段中有一组数据目次,数据目次数组的第二个元素即是引入表的目次索引。

  OriginalFirstThunk与FirstThunk两个字段也同属于指针类型的。而且正在文献中都指向一个职位。当加载到内存时,OriginalFirstThunk还指向素来指向的地方,FirstThunk指向一个API函数的地点的数据。(由PE加载器帮帮定位并修正的)

  这个偏移值指向一组IMAGE_IMPORT_BY_NAME机合的数组。这个机合读者能够以为是这个DLL文献中的API。有几个API代表有几个如此的机合。

  另一个FirstThunk宛若复造相通也一模相通的指向了与OrigFirstThunk相通的地方。然则当文献加载到内存中后,FirstThunk会指向函数的地点。这个转换由PE加载器加载。

  列出引入表不了解我讲的是否显露,总之当从PE头机合中获取到引入表地点将它的RVA转换为FVA再加上文献照射基址就能够遵守微软界说的引入表机合举办加密与毁灭。接下来咱们要做的即是将引入表中每个DLL名字与API的名字都举办加密,跋文实每个IMAGE_IMPORT_DESCRIPTOR中的FirstThunk值。并记实到咱们本人的界说的机合中。RVA2Offset函数是转换RVA到FVA。此函数正在附件代码中界说。

  前面的只是给加密引入表做个铺垫。加密引入表和列出引入表算法都相通。只但是将显示函数加密云尔。这里直接将代码列出。加密字符串的算法也很容易只是异或上99h云尔。其次和列出不相通的地方是,加密引入表记实了引入表每个IMAGE_IMPORT_DESCRIPTOR的Name1,OrigFirstThunk,FirstThunk三个字段。然后正在解密段中按此三个字段正在解密引入表。并重定位API的地点表。

  最终要讲授的即是解密引入表了。解密引入表比起加密来要繁杂极少。咱们的实在思绪是如此的。设立两个节,一个为新的引入表,一个为解密节,这个节也设立为开始的节。

  解密引入表,两种解密的格式,一是直接解密后将获取的API地点填写入FirstThunk字段指向的区域,另一种格式是重定位引入地点表。

  比如,正在咱们的标准中移用CreateFileA这个函数。call dword ptr [XXXX], 这个XXXX原来即是FirstThunk指向的那片区域中的一个地点云尔,XXXX指向的地点,倘使没有颠末咱们重定位那么直接即是跟的这个API的地点,倘使颠末咱们重定位将这个XXXX指向的地点指到咱们分派的内存中比如YYYY,那么最终将会转到YYYY指向,咱们再正在YYYY这处地点写入比如JMP ZZZZ样的跳转指令,个中ZZZZ代表的是体例API地点到YYYY这个地点的偏移量。那么当标准移用API时最终通过咱们设立的一篇代办代码将跳转到API内实施。

  这里紧要的是,咱们只重定位体例本身的DLL,倘使是第三方的DLL,咱们直接将它的地点设立到其FirstThunk指向的区域就好了。正在NT体例下,秒速赛车信誉平台加载第三方DLL是正在幼于070000000h,大于077FFFFFFh,9x下为幼于080000000h。

  最终要贯注的即是有时间FirstThunk指向的区域是不行写的,以是当咱们做全体部就业后要将一共节的属性给与它可写的权限。

  这节的道理也能够用正在R3下的HOOK方面,民多该当很轻松的思到奈何做R3下的HOOK了,倘使有方才接触咨议病毒的恩人也能够联思到一种笼统入口点的格式。呵呵!

  吾爱破解所宣布的全面破解补丁、注册机和注册消息及软件的解密剖释作品仅限用于研习和咨议宗旨;不得将上述实质用于贸易或者作恶用处,不然,全面后果请用户自大。本站消息来自收集,版权争议与本站无合。您必需鄙人载后的24个幼时之内,从您的电脑中彻底删除上述实质。倘使您心爱该标准,请撑持正版软件,进货注册,取得更好的正版效劳。如有侵权请邮件与咱们合系处罚。