知识大全 深入伪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 伪静态技术原理以及突破原理实现介绍

PHP伪静态技术原理以及突破原理实现介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!伪静态技术比

知识大全 php实现伪静态的方法

cha138/Article/program/PHP/201311/21163

知识大全 URL Rewrite实现jsp网站伪静态

URLRewrite实现jsp网站伪静态  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  tuck

知识大全 IIS下下伪静态html(设置方法

IIS下下伪静态html(设置方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先下载文件d

知识大全 伪静态web.config配置步骤

  复制代码代码如下: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中的(伪)多线程与多进程

深入解析PHP中的(伪)多线程与多进程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对P

知识大全 深入liferay portal核心之一 portlet扩展分析

  JSR规范规定所有Portlet都必须直接地或者间接地实现Portlet接口同时也提供了一个叫GenericPortlet的基类该类继承了Portlet接口统一定义了可供Portal容器识别和调用

知识大全 Java静态与动态数组特点分析

Java静态与动态数组特点分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  平常我们接触到的大