知识大全 深入伪UPX分析之一静态脱壳机
Posted 函数
篇首语:但使书种多,会有岁稔时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 深入伪UPX分析之一静态脱壳机相关的知识,希望对你有一定的参考价值。
深入伪UPX分析之一静态脱壳机 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
由于是算法直接解密 按道理来讲无所谓什么处理不处理~~~只要是UPX算法 就能搞定的… 试了几个都可以正常解密的 解密后的程序 有的可以用 有的用不了 但是OD 全部能LOAD… 正在研究解决中… 写的乱七八糟的~~~~ 贴出来给大家笑话~~~ 可能要做其它的事了 么机会再做了 把重要点的代码贴出来 希望给大家有帮助 解密代码端的函数 BOOL DecryptCode() DWORD dwEBP = ; __asm xor edi edi je _L AFA jmp _LFEND _L AFA: mov edx x D ;cmp byte ptr [esp+ x ] x ;??临时注销 mov esi pvdUPX Addr xor edi edi je _L B A jmp _LFEND _L B A: mov ecx dwUPX Size ;lea edi dword ptr[esi ecx] mov edi esi sub edi ecx xor ecx ecx je _L B A jmp _LFEND _L B A: mov eax x D cmp edx eax not eax /* jnz _L B mov eax dword ptr fs:[ x ] test eax eax js _L B mov eax dword ptr [eax + x C] mov eax dword ptr [eax + x C] mov dword ptr[eax + x ] x mov eax dword ptr fs:[ x ] mov eax dword ptr[eax+ x ] movzx eax byte ptr[eax + x ] test eax eax jnz _L B jmp _L B _L B : xor eax eax mov al byte ptr fs:[ x ] test eax eax */ jnz _L B jmp _L B _L B : _L B : or dwEBP xFFFFFFFF jmp _L B A nop _L B : mov al byte ptr[esi] mov byte ptr[edi] al inc esi inc edi _L B : add ebx ebx jnz _L B _L B A: mov ebx dword ptr[esi] sub esi adc ebx ebx _L B : jb _L B mov eax x _L B : add ebx ebx jnz _L BA mov ebx dword ptr[esi] sub esi adc ebx ebx _L BA : adc eax eax add ebx ebx jnb _L B jnz _L BB mov ebx dword ptr[esi] sub esi adc ebx ebx jnb _L B _L BB : xor ecx ecx sub eax x jb _L BC shl eax x mov al byte ptr[esi] inc esi xor eax xFFFFFFFF je _L C A mov dwEBP eax _L BC : add ebx ebx jnz _L BD mov ebx dword ptr[esi] sub esi adc ebx ebx _L BD : adc ecx ecx add ebx ebx jnz _L BE mov ebx dword ptr[esi] sub esi adc ebx ebx _L BE : adc ecx ecx jnz _L C inc ecx _L BE : add ebx ebx jnz _L BF mov ebx dword ptr[esi] sub esi adc ebx ebx _L BF : adc ecx ecx add ebx ebx jnb _L BE jnz _L C mov ebx dword ptr[esi] sub esi adc ebx ebx jnb _L BE _L C : add ecx x _L C : cmp dwEBP x D adc ecx x mov edx dwEBP lea edx dword ptr[edi + edx] cmp dwEBP jbe _L C _L C : mov al byte ptr[edx] mov byte ptr[edi] al inc edx inc edi dec ecx jnz _L C jmp _L B nop _L C : mov eax dword ptr[edx] mov dword ptr[edi] eax add edx x add edi x sub ecx x ja _L C add edi ecx jmp _L B _L C A: return TRUE; __asm _LFEND: return FALSE; //代码段解密后会有原始PE头 只需要加 个字节就是PE头 然后按PE头来处理 //估计是版本不同E 后面的值随即改变的 // BOOL ModfiyJmpCall() LPBYTE pbyte = (LPBYTE)pvdUPX Addr; DWORD dwC = x ; for(int i = x n = ; i< dwUPX Size ; i++ ) if( (pbyte[i] xE ) >= x && (pbyte[i] xE ) <= x ) i++; if( pbyte[i] == x || pbyte[i] == x || pbyte[i] == x ) DWORD dwBuf = *(LPDWORD)(&pbyte[i]) DWORD dwA = HIWORD(dwBuf) //高低位互换 BYTE byah = LOWORD(HIBYTE(dwA)) BYTE byal = LOWORD(LOBYTE(dwA)) dwA = byal * x + byah; dwA = (DWORD)&pbyte[i]; dwA += (DWORD)pvdUPX Addr; *(LPDWORD)&pbyte[i] = dwA; txtout(_t( [% d]调用修正[ x% X]: x% X < > x% X ) n (DWORD)&pbyte[i] dwBuf dwA) i += x ; n++; txtout(_t( 修正已经顺利结束 总计修正[% d < > x% X]处 ) n n) return TRUE; 再说一个就是IAT表的格式为 模块名称相对地址 + IAT表地址偏移 + 函数名称列表 函数名称前有个标志 代表是函数名称 FF代表的是HINT号 // C E DBE lea edi dword ptr [esi+ ] ; 需要这个值计算IAT和输入表 C B mov eax dword ptr [edi] ; eax = [edi] C C or eax eax C je short CBF ; eax = > jmp C A B F mov ebx dword ptr [edi+ ] C D D B lea eax dword ptr [eax+esi+ B ] ; 需要这个的 // 大家有兴趣的可以写了 UPX不算很难的 我可能需要做其他的事 估计么时间做了 关键的地方都贴出来了 应该大家都能写出来了 cha138/Article/program/Java/hx/201311/26570相关参考
PHP伪静态技术原理以及突破原理实现介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!伪静态技术比
cha138/Article/program/PHP/201311/21163
URLRewrite实现jsp网站伪静态 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! tuck
IIS下下伪静态html(设置方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先下载文件d
复制代码代码如下:cha138/Article/program/net/201404/30519
知识大全 ASP.NET用URLRewriter.dll实现伪静态
ASP.NET用URLRewriter.dll实现伪静态 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 使用Urlrewrite技术实现Struts2+Hibernate3+Spring的项目的伪静态
使用Urlrewrite技术实现Struts2+Hibernate3+Spring的项目的伪静态 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集
深入解析PHP中的(伪)多线程与多进程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对P
知识大全 深入liferay portal核心之一 portlet扩展分析
JSR规范规定所有Portlet都必须直接地或者间接地实现Portlet接口同时也提供了一个叫GenericPortlet的基类该类继承了Portlet接口统一定义了可供Portal容器识别和调用
Java静态与动态数组特点分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 平常我们接触到的大