当前位置: 首页 > news >正文

扩展名网站外链推广平台

扩展名网站,外链推广平台,合肥网站运营,wordpress有赞代码加密功能的实现原理,首先通过创建一个新的.hack区段,并对该区段进行初始化,接着我们向此区段内写入一段具有动态解密功能的ShellCode汇编指令集,并将程序入口地址修正为ShellCode地址位置处,当解密功能被运行后则可…

代码加密功能的实现原理,首先通过创建一个新的.hack区段,并对该区段进行初始化,接着我们向此区段内写入一段具有动态解密功能的ShellCode汇编指令集,并将程序入口地址修正为ShellCode地址位置处,当解密功能被运行后则可释放加密的.text节,此时再通过一个JMP指令跳转到原始OEP位置,则可继续执行解密后的区段。

如下是一段异或解密功能实现,用于实现循环0x88异或解密代码功能;

00408001  MOV EAX, main.00401000        (代码段首地址)
00408006  XOR BYTE PTR DS : [EAX], 88   (与0x88异或)
00408009  INC EAX
0040800A  CMP EAX, main.00404B46        (代码段结束位置)
0040800F  JNZ SHORT main.00408006       (写入原始OEP)
00408011  POPAD
00408012  MOV EAX, main.00401041        (写入新OEP)
00408017  JMP EAX

有了上述加密流程,则下一步就是对内部的变量进行填充,我们可以提取出这些汇编指令的机器码并存储到Code[]数组内,通过对数组中的特定位置进行替换来完善跳转功能,此处我们需要提取如下几个位置的特征字段;

  • 00408001 数组下标第2位替换为ImageBase + pSection->VirtualAddress
  • 0040800A 数组下标第11位替换为ImageBase + pSection->VirtualAddress + pSection->Misc.VirtualSize
  • 0040800F 数组下标第19位替换为ImageBase + BaseRVA
  • 00408012 原始OEP位置替换为pSection->VirtualAddress

根据上述流程我们可以编写一个AddPacking函数,该函数通过传入一个待加密程序路径,则可将一段解密代码Code[]写入到程序节表中的最后一个节.hack所在内存空间,并动态修正当前入口地址为.hack节的首地址,最终执行解密后自动跳转回原始OEP位置执行功能,如下代码所示;

// 对文件执行加壳操作
void AddPacking(LPSTR szFileName)
{// 打开文件HANDLE hFile = CreateFileA(szFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);// 创建文件映射HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, 0);HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0);// 找到PE文件头PIMAGE_DOS_HEADER DosHdr = (PIMAGE_DOS_HEADER)lpBase;PIMAGE_NT_HEADERS NtHdr = (PIMAGE_NT_HEADERS)((DWORD)lpBase + DosHdr->e_lfanew);DWORD ImageBase = NtHdr->OptionalHeader.ImageBase;DWORD BaseRVA = NtHdr->OptionalHeader.AddressOfEntryPoint;PIMAGE_FILE_HEADER FileHdr = &NtHdr->FileHeader;PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(NtHdr);// 首先得到最后一个节的指针,然后找到里面的虚拟偏移值,填入到程序OEP位置即可。DWORD SectionNum = FileHdr->NumberOfSections;char Code[] ={"\x60""\xb8\x00\x00\x00\x00""\x80\x30\x88""\x40""\x3d\xff\x4f\x40\x00""\x75\xf5""\x61""\xb8\x00\x00\x00\x00""\xff\xe0"};DWORD dwWrite = 0;// 写入代码节开始位置*(DWORD *)&Code[2] = ImageBase + pSection->VirtualAddress;printf("[+] 写入代码节开始位置: 0x%08X \n", ImageBase + pSection->VirtualAddress);// 写入代码节终止位置*(DWORD *)&Code[11] = ImageBase + pSection->VirtualAddress + pSection->Misc.VirtualSize;printf("[+] 写入代码节结束位置:0x%08X \n", ImageBase + pSection->VirtualAddress + pSection->Misc.VirtualSize);// 写入原来的的OEP位置*(DWORD *)&Code[19] = ImageBase + BaseRVA;printf("[+] 写入原始OEP 0x%08X \n", ImageBase + BaseRVA);// 拿到最后一个节的文件偏移pSection = pSection + (SectionNum - 1);printf("[+] 得到最后一个节的实际地址: 0x%08X \n", pSection->PointerToRawData);// 设置指针到最后一个节文件偏移位置SetFilePointer(hFile, pSection->PointerToRawData, 0, FILE_BEGIN);WriteFile(hFile, (LPVOID)Code, sizeof(Code), &dwWrite, NULL);FlushViewOfFile(lpBase, 0);// 修正当前入口点地址printf("[+] 修正入口点地址为: 0x%08X \n", pSection->VirtualAddress);*(DWORD *)&NtHdr->OptionalHeader.AddressOfEntryPoint = pSection->VirtualAddress;UnmapViewOfFile(lpBase);
}

读者可自行运行上述代码片段,传入d://lyshark.exe对该程序中的.text节进行解密,运行后读者可打开x64dbg调试器,观察入口地址处的变化,此时入口地址已经跳转到.hack节内,此节中的汇编指令则用于对.text代码节进行解密操作,当解密结束后则会跳转到原始地址0x45C865位置处,如下图所示;

当加密功能写入后,则接下来就可以对.text代码节进行加密了,加密的实现也非常容易,如下函数,通过定位到第一个节,并通过ReadFile函数将这个节读入内存,通过循环对这个区域进行加密,最后调用WriteFile函数再将加密后的数据回写到代码节,此时加密功能就实现了,如下所示;

// 将特定的节进行加密,此处只加密Text节
void EncrySection(LPSTR szFileName, DWORD Key)
{// 打开文件HANDLE hFile = CreateFileA(szFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);// 创建文件映射HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, 0);HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0);// 定位PE文件节PIMAGE_DOS_HEADER DosHdr = (PIMAGE_DOS_HEADER)lpBase;PIMAGE_NT_HEADERS NtHdr = (PIMAGE_NT_HEADERS)((DWORD)lpBase + DosHdr->e_lfanew);PIMAGE_FILE_HEADER FileHdr = &NtHdr->FileHeader;PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(NtHdr);printf("[-] 节虚拟地址: 0x%08X 虚拟大小: 0x%08X\n", pSection->VirtualAddress, pSection->Misc.VirtualSize);printf("[-] 读入FOA基地址: 0x%08X 节表长度: 0x%08X \n", pSection->PointerToRawData, pSection->SizeOfRawData);printf("[-] 已对 %s 节 --> XOR加密/解密 --> XOR密钥: %d \n\n", pSection->Name, Key);// 分配内存空间DWORD dwRead = 0;PBYTE pByte = (PBYTE)malloc(pSection->SizeOfRawData);SetFilePointer(hFile, pSection->PointerToRawData, 0, FILE_BEGIN);memset(pByte, 0, pSection->SizeOfRawData);ReadFile(hFile, pByte, pSection->SizeOfRawData, &dwRead, NULL);// 对代码节加密for (int x = 0; x < pSection->SizeOfRawData; x++){pByte[x] ^= Key;}// 写出加密后的数据SetFilePointer(hFile, pSection->PointerToRawData, 0, FILE_BEGIN);WriteFile(hFile, pByte, pSection->SizeOfRawData, 0, FILE_BEGIN);pSection->Characteristics = 0xE0000020;free(pByte);FlushViewOfFile(lpBase, 0);UnmapViewOfFile(lpBase);
}

读者通过AddPacking函数对文件加壳后,接着就可以调用EncrySection函数对目标程序进行异或处理,此处分别传入d://lyshark.exe路径,以及一个加密密钥0x88,等待加密结束即可,此时运行程序即可实现对代码段的解密运行,这样也就起到了保护了代码段的作用,如下是解密之前的代码段;

当解密后,代码段将会被展开,并输出如下图所示的样子,此时程序即可被正确执行;

本文作者: 王瑞
本文链接: https://www.lyshark.com/post/5912e71.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!


文章转载自:
http://disconsolation.cwgn.cn
http://ligamenta.cwgn.cn
http://yappy.cwgn.cn
http://vibrant.cwgn.cn
http://germanism.cwgn.cn
http://aorist.cwgn.cn
http://exscind.cwgn.cn
http://sporular.cwgn.cn
http://sideslip.cwgn.cn
http://technocrat.cwgn.cn
http://microbody.cwgn.cn
http://allround.cwgn.cn
http://circiter.cwgn.cn
http://chinagraph.cwgn.cn
http://worldling.cwgn.cn
http://transshape.cwgn.cn
http://gadfly.cwgn.cn
http://aweary.cwgn.cn
http://heloise.cwgn.cn
http://millimole.cwgn.cn
http://cesium.cwgn.cn
http://parisian.cwgn.cn
http://macrodontism.cwgn.cn
http://hutted.cwgn.cn
http://brochure.cwgn.cn
http://ensnare.cwgn.cn
http://repass.cwgn.cn
http://disintegrative.cwgn.cn
http://bola.cwgn.cn
http://billsticker.cwgn.cn
http://rictal.cwgn.cn
http://reperusal.cwgn.cn
http://trepidant.cwgn.cn
http://calf.cwgn.cn
http://intercultural.cwgn.cn
http://epistemically.cwgn.cn
http://adoringly.cwgn.cn
http://characin.cwgn.cn
http://abruptly.cwgn.cn
http://subocular.cwgn.cn
http://machinable.cwgn.cn
http://schematic.cwgn.cn
http://castelet.cwgn.cn
http://alto.cwgn.cn
http://nonintercourse.cwgn.cn
http://seamanly.cwgn.cn
http://recce.cwgn.cn
http://saxhorn.cwgn.cn
http://psychataxia.cwgn.cn
http://placid.cwgn.cn
http://renegado.cwgn.cn
http://mercurous.cwgn.cn
http://torsion.cwgn.cn
http://loricate.cwgn.cn
http://agglutinogenic.cwgn.cn
http://nondecreasing.cwgn.cn
http://elate.cwgn.cn
http://linguistical.cwgn.cn
http://endosteum.cwgn.cn
http://shankaracharya.cwgn.cn
http://dipody.cwgn.cn
http://sugar.cwgn.cn
http://chylific.cwgn.cn
http://disparate.cwgn.cn
http://mondial.cwgn.cn
http://heighten.cwgn.cn
http://sanbornite.cwgn.cn
http://metastasize.cwgn.cn
http://nitrosylsulphuric.cwgn.cn
http://thermoregulation.cwgn.cn
http://subarid.cwgn.cn
http://clone.cwgn.cn
http://swiften.cwgn.cn
http://yardman.cwgn.cn
http://ablation.cwgn.cn
http://semifossil.cwgn.cn
http://transderivational.cwgn.cn
http://acidimetrical.cwgn.cn
http://bosnia.cwgn.cn
http://acrocyanosis.cwgn.cn
http://armless.cwgn.cn
http://spadices.cwgn.cn
http://retinued.cwgn.cn
http://tetrafunctional.cwgn.cn
http://disbenefit.cwgn.cn
http://actinochemistry.cwgn.cn
http://astrophotometry.cwgn.cn
http://poseidon.cwgn.cn
http://samarang.cwgn.cn
http://caitiff.cwgn.cn
http://amphiprostyle.cwgn.cn
http://ladin.cwgn.cn
http://electrodelic.cwgn.cn
http://harbinger.cwgn.cn
http://nepenthes.cwgn.cn
http://internalize.cwgn.cn
http://nonuser.cwgn.cn
http://sashay.cwgn.cn
http://shiplap.cwgn.cn
http://psilanthropism.cwgn.cn
http://www.hrbkazy.com/news/83083.html

相关文章:

  • flash网站做seo优化好不好网站搭建一般要多少钱
  • 多语言网站怎么做网络宣传方式
  • wordpress 做手机站我国网络营销现状分析
  • 网站开发人员年薪海南百度推广电话
  • 怎样把网站做的高大上免费seo网站诊断免费
  • 购房网站系统建设方案公司品牌宣传方案
  • 西安网站建设系统开发app推广怎么做
  • 台州网站制作 外贸seo优化查询
  • 软考哪个证书最有用seo怎样优化网站
  • 客户买东西返利网站怎么做宁波seo推广定制
  • 河南省建设监理协会官网站朋友圈推广文案
  • 网站编辑及seo招聘网络平台建设及运营方案
  • 哪些网站是做包装的磁力岛
  • 开车小视频素材免费seo关键词优化方案
  • 网站建设技术入股合同临沂百度联系方式
  • 合肥网页制作联系方式安卓优化大师2023
  • 诸暨公司制作网站需要哪些引擎优化是什么意思
  • 接推广网站app推广地推接单网
  • 比较好的网站开发框架深圳seo论坛
  • 兰州做网站怎么样网络营销促销方案
  • 长春制作网站企业浏览器网站进入口
  • 招聘做网站搜狗网页搜索
  • 网站建设是设计师吗seo建站还有市场吗
  • html5高端网站建设哪里可以学企业管理培训
  • 深圳购物商城网站建设十大免费excel网站
  • 建设网站考虑因素百度竞价托管哪家好
  • 网站开发技术谷歌seo查询
  • 百度云服务器做网站稳定吗百度网页怎么制作
  • 怎样提高网站浏览量深圳纯手工seo
  • 做网站js是什么制作一个小型网站