列表格式显示

热搜词:winrar    ftp   office   photoshop   输入法   ghost   win7  

09编程开发 - 分类

广告招商中......
联系方式!

编程工具 - 时间排序 更多...
    编程工具 - 点击排序 更多...
      编程工具 - 大小排序 更多...
        作者

         

        最近发布的软件 更多>>

        首页 >> 09编程开发>> 编程工具>>pespin 1.33 脱壳机 发布者:admin >> 本人发布的更多软件

        广告招商中...... 联系方式!

        pespin 1.33 脱壳机 

             
        软件厂家: 官方网站:
        大小: 语言:
        类型: 类别:
        更新时间: 运行环境:
        ;开始下载地址

        pespin 是一款非常好用的加壳exe压缩工具,对多种exe文件进行压缩编辑,使用简单有效执行修补。快来绿色资源网下载体验吧!

        pespin软件介绍

        pespin是一款简单易用功能强大的软件加密程序,它可以为所有的exe,dll程序加密,防止软件被解密。

        pespin电脑版

        pespin软件特点

        压缩库aplib的版权保护和编码的约根易卜生主页:/

        [attach]53605[/attach]

        兼容性windows?98/me/nt/2k/xp/vista

        pespin使用说明

        // 本脚本不支持nanomite修复 ----> hkfans

        var sectionbase

        mov sectionbase, eip

        and sectionbase, fffff000

        var codebase

        var codesize

        var lastexception

        gmi eip, codebase

        mov codebase, $result

        gmi eip, codesize

        mov codesize, $result

        //========================================================================

        // 双进程解除

        //=========================================================================

        // 对createmutexa的首地址下硬件断点 --- > (不能在首地址下软件断点,有检测)

        bphwc

        gpa "createmutexa", "kernel32.dll"

        bphws $result, "x"

        run

        bphwc

        rtu

        bphwc $result

        find eip, #9cc12c2406f7142483242401#

        bphws $result, "x"

        run

        bphwc

        // 解除双进程,双变成单

        mov !zf,1

        run

        find eip, #f187df57c3#

        mov lastexception, $result+1

        // int1异常的处理方法,新eip --> 有调试进程(父进程处理的),所以根据debugapi处理

        add eip, 1e

        run

        // 两次特权指令 三次内存异常 都是被调试进程自己处理

        _exception:

        esto

        cmp eip, lastexception

        jnz _exception

        // 最后一个单步异常, 由调试进程处理的

        add eip, 2b

        //===========================================================

        // ? ?iat 修复

        //===========================================================

        bphwc

        var bp1

        var bp2

        var bp3

        var encrypttable

        var miniataddr

        var maxiataddr

        var iatsize

        var comparevalue

        var pespinfound

        //mov bp1, 010147ef

        //mov bp2, 0101402d

        //mov bp3, 010149b7

        //mov encrypttable, 01014079

        find sectionbase, #817e10????????9ceb01#

        mov bp1, $result

        find sectionbase, #2407f5ff3424 c30 bc0c3#

        mov bp2, $result + 7

        find sectionbase, #0fba67ff07eb01#

        mov bp3, $result + 5

        find sectionbase, #3917eb07??eb01#

        mov encrypttable, $result + e

        // 获取比较的数值

        mov comparevalue, bp1+3

        mov comparevalue, [comparevalue]

        // nop掉比较查找是否加密的表

        fill encrypttable, 6, 90

        bphws bp1, "x"

        bphws bp2, "x"

        bphws bp3, "x"

        _cycle:

        run

        // 第一个段点 判读所有 dll是否处理结束

        cmp eip, bp1

        jnz _bp2label

        cmp [esi+10], comparevalue

        jz _iatprocessover

        jmp _cycle

        // 第二个断点保存 iat地址 --> 计算出最大和最新的iat地址(后面用)

        _bp2label:

        cmp eip, bp2

        jnz _bp3label

        cmp miniataddr, 0

        jnz _label

        mov miniataddr, edx

        mov maxiataddr, edx

        _label:

        cmp edx, miniataddr

        ja _label1

        mov miniataddr, edx

        _label1:

        cmp edx, maxiataddr

        jb _label2

        mov maxiataddr, edx

        _label2:

        jmp _cycle

        // 第三个断点 让外壳不重定向api函数

        _bp3label:

        mov !cf, 0

        jmp _cycle

        _iatprocessover:

        //-----------------------------------------------------------

        // ff15 ff25 修复--> ff25 jmp [iat]

        //-----------------------------------------------------------

        < p>//-------------------------------
        // 特殊的一种 ea ???????? ff
        //-------------------------------
        var ff15addr
        var ff25addr
        var 8baddr
        var a1addr
        var ff15count
        var ff25count
        var 8bcount
        var iataddr
        var erriataddr
        _findff25start:
        mov ff25addr, codebase
        _findff25:
        find ff25addr, #ea????????ff#
        mov ff25addr, $result
        cmp ff25addr, 0
        jz _findff25start_2
        mov iataddr, [ff25addr+1]
        // 判读iat地址是否正确
        cmp iataddr, miniataddr
        jb _ff25out
        cmp iataddr, maxiataddr
        ja _ff25out
        // 修复
        mov [ff25addr], 25ff
        mov [ff25addr+2], iataddr
        inc ff25count
        _ff25out:
        add ff25addr, 6
        jmp _findff25
        //---------------------------------------------
        // ff25 [iat] jmp dword ptr [iat]
        //---------------------------------------------
        _findff25start_2:
        mov pespinfound, 0
        mov ff25addr, codebase
        _findff25_2:
        find ff25addr, #ff25#
        mov ff25addr, $result
        cmp ff25addr, 0
        jz _findff25pespinstart_2
        mov erriataddr, [ff25addr+2]
        mov iataddr, [erriataddr]
        // 判读iat地址是否正确
        cmp iataddr, miniataddr
        jb _ff25out_2
        cmp iataddr, maxiataddr
        ja _ff25out_2
        // 修复
        mov [ff25addr+2], iataddr
        inc ff25count
        _ff25out_2:
        add ff25addr, 2
        jmp _findff25_2
        _findff25pespinstart_2:
        cmp pespinfound, 1
        jz _findff15start
        mov ff25addr, sectionbase
        mov pespinfound, 1
        jmp _findff25_2
        //-----------------------------------------------
        // call dword ptr [iat]
        _findff15start:
        mov pespinfound, 0
        mov ff15addr, codebase
        _findff15:
        find ff15addr, #ff15#
        mov ff15addr, $result
        cmp ff15addr, 0
        jz _findff15pespinstart
        // 获取ff15的目的地址,由目的地址获取iat地址
        mov erriataddr, [ff15addr+2]
        mov iataddr, [erriataddr]
        // 判读iat地址是否正确
        cmp iataddr, miniataddr
        jb _ff15out
        cmp iataddr, maxiataddr
        ja _ff15out
        // 修复
        mov [ff15addr+2], iataddr
        inc ff15count
        _ff15out:
        add ff15addr, 2
        jmp _findff15
        _findff15pespinstart:
        cmp pespinfound, 1
        jz _finda1start
        mov ff15addr, sectionbase
        mov pespinfound, 1
        jmp _findff15
        //-----------------------------------------------------------
        // ? a1 e6af5800 ? mov ? ? eax, dword ptr [58afe6]
        // ? a3 f8c74900 ? mov ? ? dword ptr [49c7f8], eax ? ? ? ? ?; <&kernel32.tlsgetvalue>
        //-----------------------------------------------------------
        _finda1start:
        mov pespinfound, 0
        mov a1addr, codebase
        _finda1:
        find a1addr, #a1#
        mov a1addr, $result
        cmp a1addr, 0
        jz _finda1pespinstart
        // 获取8b35的目的地址,由目的地址获取iat地址
        mov erriataddr, [a1addr+1]
        mov iataddr, [erriataddr]
        // 判读iat地址是否正确
        cmp iataddr, miniataddr
        jb _a1out
        cmp iataddr, maxiataddr
        ja _a1out
        // 修复
        mov [a1addr+1], iataddr
        inc 8bcount
        _a1out:
        add a1addr, 1
        jmp _finda1
        _finda1pespinstart:
        cmp pespinfound, 1
        jz _find8bstart
        mov a1addr, sectionbase
        mov pespinfound, 1
        jmp _finda1
        // 被保护程序所在区段 和 外壳所在的区段(oep)
        //------------------------------------------------------------
        // 8b35 [iat] --> mov esi, dword ptr [iat] call esi
        // 8b3d [iat] --> mov edi, dword ptr [iat] call edi
        // byte: ? ? ? ? ? 05 0d 15 1d 25 2d 35 3d
        _find8bstart:
        mov pespinfound, 0
        mov 8baddr, codebase
        // 效率比较差点...
        _find8b:
        find 8baddr, #8 b#
        mov 8baddr, $result
        cmp 8baddr, 0
        jz _find8bpespinstart
        // 获取8b35的目的地址,由目的地址获取iat地址
        mov erriataddr, [8baddr+2]
        mov iataddr, [erriataddr]
        // 判读iat地址是否正确
        cmp iataddr, miniataddr
        jb _8bout
        cmp iataddr, maxiataddr
        ja _8bout
        // 修复
        mov [8baddr+2], iataddr
        inc 8bcount
        _8bout:
        add 8baddr, 1
        jmp _find8b
        _find8bpespinstart:
        cmp pespinfound, 1
        jz _oepfinder
        mov 8baddr, sectionbase
        mov pespinfound, 1
        jmp _find8b
        //==================================================================
        // oep 查找
        //===================================================================
        var oep
        _oepfinder:
        bphwc
        // esp定理, 然后向下单步几步就到了
        bphws esp+1c, "r"
        run
        bphwc
        // 直接作为eip,不知道查找什么
        mov oep, eip
        //===================================================================
        // sdk 修复
        //===================================================================
        var start
        var end
        var sdk1count
        var sdk2count
        var fixcallcount
        var fixjmpcount
        sdkfixer:
        mov start, codebase
        mov tmp, start
        _findclearmacro:
        find tmp, #9c60b9????????bf????????81e9????????b8????????05????????ff0d????????0011619d#
        mov tmp, $result
        cmp tmp, 0
        jz sdkfixer2
        inc sdk1count
        mov eip, tmp
        bp tmp+25
        run
        bc tmp+25
        sto
        // 修改跳转
        mov dest, eip
        sub dest, tmp
        sub dest, 2
        mov [tmp], eb
        mov [tmp+1], dest
        // 修改被保护代码下面的代码 (找popfd) -->防止删除
        findop eip, #9d#
        mov tmp, $result
        inc tmp
        inc tmp
        mov dest, [tmp]
        and dest, ff
        add dest, tmp
        add dest, 1
        // 固定长度的...
        mov [tmp-2f], eb
        sub dest, tmp-2f
        sub dest, 2
        mov [tmp-2e], dest
        // 下一个
        jmp _findclearmacro
        /////////////////////////////////////////////////////////////////////
        // sdk第二个宏修复 (这个代码不好搜索,暂时找ff15,并且进入的是eb 01)
        sdkfixer2:
        var crypt1
        var crypt2
        mov start, codebase
        mov tmp, start
        _cryptmacro:
        findop tmp, #ff15#
        mov tmp, $result
        cmp tmp, 0
        jz coderedirectionfixer
        mov crypt1, tmp
        // 查看 ff15到的函数的前2个字节是不是eb 01
        add tmp, 2
        mov dest, [tmp]
        mov dest, [dest]
        mov dest, [dest]
        and dest, ffff
        cmp dest, 01eb
        jnz _cryptmacro
        inc sdk2count
        // 新建eip
        mov eip, tmp-2
        // 对原程序的指令下段, 接着call后的是将要解密代码的大小 (4 + 6)
        bphws eip+a, "x"
        run
        bphwc ? eip
        // 查找下一个call, 下一个call为重新加密
        find tmp, #ff15????????#
        mov tmp, $result
        // 修改上一个call为直接跳到 解密后代码
        mov [crypt1], 08eb
        fill ? crypt1+2, 8, 90
        mov [tmp], 08eb
        fill tmp+2, 8, 90
        jmp _cryptmacro
        //////////////////////////////以下修复code redirection//////////////////////////
        coderedirectionfixer:
        mov start, codebase
        // 查找call
        _findcallstart:
        mov tmp, start
        _findcall:
        findop tmp, #e8#
        mov tmp, $result
        cmp tmp, 0
        jz _findjmpstart
        // 判断目的地址是否为 0x1000以下
        inc tmp
        mov dest, [tmp]
        add dest, tmp
        add dest, 4
        cmp dest, codebase
        jb _fixcall
        jmp _findcall
        _fixcall:
        inc fixcallcount
        // 修复
        inc dest
        mov dest1, [dest]
        add dest1, dest
        add dest1, 4
        sub dest1, tmp
        sub dest1, 4
        mov [tmp], dest1
        // 如果相邻的两个会有问题,下一个的call查找不到
        add tmp, 4
        jmp _findcall
        ///////////////////////////////////////
        // 查找jmp
        _findjmpstart:
        mov tmp, start
        _findjmp:
        findop tmp, #e9#
        mov tmp, $result
        cmp tmp, 0

        jz exit

        inc tmp

        mov dest, [tmp]

        add dest, tmp

        add dest, 4

        cmp dest, codebase

        jb _fixjmp

        jmp _findjmp

        _fixjmp:

        inc fixjmpcount

        // 修复 ? 都是5个字节 --> 可能不止

        var b1

        var b2

        var longjumpdest

        var movsize

        var movsize1

        var movdest

        var srcbyte

        mov b1, [dest]

        and b1, ff

        mov b2, [dest+1]

        mov [tmp-1], b1

        // 注意: 如果进去的 jmp 语句的话(肯定是e9)--> 不能直接搬

        cmp b1, e9

        jz _islongjump

        // 确定需要搬多少个字节--> jmp指令之前

        findop dest, #e9#

        mov movsize, $result

        sub movsize, dest

        mov movsize1, 0

        mov movdest, tmp-1

        // 每个字节拷贝

        _movcycle:

        cmp movsize1, movsize

        jz _movover

        mov srcbyte, [dest]

        and srcbyte, ff

        fill movdest, 1, srcbyte

        inc dest

        inc movdest

        inc movsize1

        jmp _movcycle

        _movover:

        jmp _isnotlongjump

        _islongjump:

        add longjumpdest, dest

        add longjumpdest, b2

        add longjumpdest, 4

        sub longjumpdest, tmp

        sub longjumpdest, 1

        sub longjumpdest, 2

        mov [tmp], longjumpdest

        _isnotlongjump:

        add tmp, 4

        jmp _findjmp

        exit:

        bphwc

        //=========================================================

        // 信息提示

        //==========================================================

        sub maxiataddr, miniataddr

        mov iatsize, maxiataddr+4

        var message

        mov message, ""

        add message, "oep: "

        add message, oep

        add message, "\r\n"

        add message, "iat address: "

        add message, miniataddr

        add message, "\r\n"

        add message, "iat size: "

        add message, iatsize

        msg message

        解压密码 :www.down80.com


        本页Html网址:/htmlsoft/57006.html

        本页aspx网址:/soft.aspx?id=57006&bianhao=20240101_013147_658144&kind1=09编程开发&kind2=编程工具

        上一篇:WinDriver(驱动开发工具)

        下一篇:powertcp ssl工具

        增加   


        相关评论        新窗口打开查看评论