您的位置:程序门 -> vb -> 基础类



exe伪装天使整理分析


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


exe伪装天使整理分析
发表于:2007-08-02 09:12:33 楼主
如果你对pe结构一无所知,那么估计是看不懂。

所用工具

uedit,ollydbg,win98记事本,计算器,peid,加pe脱壳知识。

'窗体代码

'btw,一直看不懂这个程序,基本拿下了。

option   explicit

dim   mbakfilename$

private   sub   form_load()

        option1(0).value   =   true

end   sub

private   sub   cmdbrow_click()

        commondialog1.filter   =   "exe ¦*.exe ¦ "
        commondialog1.showopen
        text1.text   =   commondialog1.filename

end   sub

private   sub   cmdok_click()

        dim   bytposition   as   byte
        dim   address&
        dim   pearray(5)   as   byte
        dim   i&
        dim   operateflag   as   boolean
        dim   newoep&
        dim   oldoep&
        dim   freeaddressarray()   as   byte

        if   text1.text   =   " "   then

                msgbox   "请先选择需要伪装的文件! ",   vbinformation,   "提示 "
                exit   sub

        else

                mbakfilename$   =   left$(text1,   len(text1)   -   4)   &   ".bak "

                filecopy   text1,   mbakfilename$

        end   if

        address&   =   1

        open   text1.text   for   binary   as   #1

        operateflag   =   false

        '从文件第一个字节位置开始
        do

                get   #1,   address&,   bytposition

                '寻找pe头
                if   bytposition   =   &h50   then

                        for   i   =   0   to   5

                                get   #1,   address&   +   i,   pearray(i)

                        next

                        '通用特制码
                        if   pearray(0)   =   &h50   and   pearray(1)   =   &h45   and   pearray(4)   =   &h4c   and   pearray(5)   =   1   then

                                operateflag   =   true
                                exit   do

                        end   if

                end   if

                address&   =   address&   +   1

        loop   while   operateflag   =   false

        'pe头附近40个字节就是oep!?
        newoep&   =   address&   +   40
        get   #1,   newoep&,   oldoep&
        oldoep&   =   oldoep&   +   &h400000     '加上偏移量

        '选择一个空地放存放伪装码,地大物博啊,有身份证就能当业主
        address&   =   800
        operateflag   =   false

        '选择的vc++
        if   option1(0).value   =   true   then

                redim   freeaddressarray(51)

                do
                        address&   =   address&   +   4

                        for   i   =   0   to   51

                                '分配52个字节写伪装代码
                                get   #1,   address&   +   i,   freeaddressarray(i)

                                if   freeaddressarray(i)   <>   &h0   then

                                        exit   for

                                else

                                        if   i   =   51   then

                                                operateflag   =   true

                                        end   if

                                end   if

                        next

                loop   while   operateflag   =   false

                '在原来oep位置写新oep
                put   #1,   newoep&,   address&

                address&   =   address&   +   1
                address&   =   maskvc(address&)

                oldoep&   =   (oldoep&   -   (address&   +   &h400000))
                '写跳转地址,伪装代码当然要跳往真正入口了
                put   #1,   address&,   oldoep&   -   3

        end   if

        '选择的vc++6.0
        if   option1(1).value   =   true   then

                redim   freeaddressarray(63)

                do

                        address&   =   address&   +   4

                        for   i   =   0   to   63

                                get   #1,   address&   +   i,   freeaddressarray(i)

                                if   freeaddressarray(i)   <>   &h0   then

                                        exit   for

                                else

                                        if   i   =   63   then   operateflag   =   true

                                end   if

                        next

                loop   while   operateflag   =   false

                put   #1,   newoep&,   address&

                address&   =   address&   +   1

                maskvc60   (address&)

                oldoep&   =   (oldoep&   -   (address&   +   54   +   &h400000))
                put   #1,   address&   +   54,   oldoep&   -   3

        end   if

        '选择的delphi   6.0-7.0
        if   option1(2).value   =   true   then

                redim   freeaddressarray(16)

                do

                        address&   =   address&   +   4

                        for   i   =   0   to   16

                                get   #1,   address&   +   i,   freeaddressarray(i)

                                if   freeaddressarray(i)   <>   &h0   then

                                        exit   for

                                else

                                        if   i   =   16   then   operateflag   =   true

                                end   if

                        next

                loop   while   operateflag   =   false

                put   #1,   newoep&,   address&

                address&   =   address&   +   1

                maskdelphi60   (address&)

                oldoep&   =   (oldoep&   -   (address&   +   11   +   &h400000))

                put   #1,   address&   +   11,   oldoep&   -   3

        end   if

        msgbox   "恭喜,伪装成功! ",   vbinformation
        close   #1

        cmdok.enabled   =   false
        cmdtest.enabled   =   true

end   sub

private   sub   cmdtest_click()
       
        shellwait   (text1)

        if   vbno   =   msgbox( "程序正常运行没? ",   vbquestion   +   vbyesno,   "提问 ")   then

                kill   text1
                name   mbakfilename$   as   left$(text1,   len(text1)   -   4)   &   ".exe "
                cmdok.enabled   =   true
                cmdtest.enabled   =   false

        else

                kill   mbakfilename$
                cmdok.enabled   =   true
                cmdtest.enabled   =   false

        end   if

end   sub

原文

http://www.vbgood.com/viewthread.php?tid=55083&extra=page%3d1


快速检索

最新资讯
热门点击