本文为看雪论坛优秀文章看雪论坛作者id:黑手鱼理论知识星辰云网络验证,星辰云网络验证网络验证系统是为软件作者设计的一套完整免费的网络验证体系。可以为开发的软件增加收费授权的功能,让作者开发的软件可以进行销售、充值、登陆等操作,并且提供防破解验证功能,可以更好的保护您的作品。同时增加了一系列代理管理机制,让您更好的管理代理售卡、换卡、结算等操作。!
为什么需要重新定位
因为特殊情况这块地址不给用了你要挪到另外一个地方,你本来是在哪里的挪到另外一个地方你还是在哪里。如下图所示:小明在教室a是第一排,搬到教室b小明还是第一排。push 0xface0002-------->修复后是:0mov edi,0xface0003-------->修复后是:新区段首地址vmcontextjmp dword ptr ds:[eax*4+0x474fcf]-------->修复后是:handle块jmp short 00474984-------->修复后是:vmdispatcher总结:1、这些地址直接使用肯定会报错,因为这些地址是基于加壳机的,并非我们被加壳程序的。2、我们要将所有地址修复成基本我们被加壳程序的。3、我们要修改两处:struct_disassemblyfunction->lodword_vmp_address;struct_disassemblyfunction->readhexaddress。4、基本要修复都是有:displacement、immediate这些。如图所示:第一种:修复struct_disassemblyfunction->lodword_vmp_address修复前:修复后:第二种:修复struct_disassemblyfunction->readhexaddress典型例子1:00474991 ff2485 cf4f4700 jmp dword ptr ds:[eax*4+0x474fcf]这一句不修复肯定执行会错误。我们要修复这一句的displacement,改成一个被加壳程序存在的地址就ok了。例如:jmp dword ptr ds:[eax*4+0x4051bb]典型例子2:jmp vmdispatcher正文筛选esi_addr[x]结构数据保存到ruct_vmpopcodepy_50结构。将struct_disassemblyfunction所在的数组下标保存到struc_69结构里。挑选jmp ret指令保存起来:struc_69结构定义如下:总结:
struc_69结构
struc_69->arraynumber==handle块头struc_69->filterarraynumber==handle块结束地址,也就是jmp或则ret
找到第一组handle块在数组的元素下标,作为结尾标识
符合条件的是:解析jmpaddr跳转表,填充的vmopcode都是0x23。然后对struct_vmpopcodepy_50结构进行数组乱序。循环填充struc-savealldisasmfundata->arraynumber(基本版)vmp_address(0×10)替换成实际壳的真实地址每次执行完毕后sub_480be0(a1a, readhexlen, v3->characteristics & 0x20, 0i64)函数。struc_59->lodword_uservmpstartaddr+=readhexlen;(默认的壳起始oep(新区段的起始地址))。然后替换掉struct_disassemblyfunction->lodword_vmp_address为真正的地址。总结:前面所有工作都是找到所有使用到的struct_disassemblyfunction结构,然后对其地址进行替换成真实壳地址。替换前后对比:前:后:
修复特定值
push 0xface0002------->push 重定位值mov edi,0xface0003------->mov edi,vmcontext
修复所有jmp vmdispatcher的地址
公式:jmp后的偏移量=目标地址-原来地址-5(5是指令长度)
修复完毕的样子
下一篇文章介绍1、伪代码构造2、伪代码加密(前面构成出add的解密代码,所以这里要对称整出一套加密代码)正向就是解密,取反就是加密了。0x4=add ---->加密用sub
0x5=xor ---->xor不变0x34=sub ---->加密用add0x43=rol 循环左移0x44=ror 逻辑右移0x5c=not 单操作数0x29=inc 单操作数0x2a=dec 单操作数0x5d=neg 单操作数0x31=bswap 单操作数- end -
看雪id:黑手鱼
*本文由看雪论坛 黑手鱼 原创,转载请注明来自看雪社区
推荐文章++++
进阶安全圈,不得不读的一本书﹀
﹀﹀戳“阅读原文”一起来充电吧!