飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4348|回复: 5

[已解决] 【VB程序自校验】已找到关键跳,求高人指点

[复制链接]
  • TA的每日心情
    奋斗
    2025-1-6 18:17
  • 签到天数: 153 天

    [LV.7]常住居民III

    发表于 2009-6-29 21:30:44 | 显示全部楼层 |阅读模式
    本来在坛子上看到高手们都讲新手不要去搞VB程序,一直都没敢动手
    今天偶然用到个程序,看到是upx的壳,顺手单步跟踪脱它衣服玩
    脱下来发现程序带了自校验
    运行一下一闪而过
    再查壳:Microsoft Visual Basic 5.0 / 6.0
    心想正好今天休息,整整VB自校验看看
    于是痛苦的一天开始了……
    被里面的jmp和call拖着满世界跑,一直按到手指头发软也没搞清楚方向
    没办法,只好开了两个od对着看,10分钟前终于到了关键跳转的地方
    7348F18E    8A4A 74         MOV CL,BYTE PTR DS:[EDX+74]
    7348F191    B8 00C00000     MOV EAX,0C000
    7348F196    F6C1 03         TEST CL,3
    7348F199    0F85 65470000   JNZ msvbvm60.73493904
    7348F19F  ^ EB D9           JMP SHORT msvbvm60.7348F17A
    7348F1A1    8975 EC         MOV DWORD PTR SS:[EBP-14],ESI
    7348F1A4    33C0            XOR EAX,EAX
    7348F1A6    8A46 01         MOV AL,BYTE PTR DS:[ESI+1]
    7348F1A9    83C6 02         ADD ESI,2
    7348F1AC    FF2485 58FA4873 JMP DWORD PTR DS:[EAX*4+7348FA58]
    7348F1B3    59              POP ECX
    7348F1B4    66:0BC9         OR CX,CX
    7348F1B7   /75 12           JNZ SHORT msvbvm60.7348F1CB           ////////关键跳
    7348F1B9    0FB736          MOVZX ESI,WORD PTR DS:[ESI]
    7348F1BC    0375 A8         ADD ESI,DWORD PTR SS:[EBP-58]
    7348F1BF    33C0            XOR EAX,EAX
    7348F1C1    8A06            MOV AL,BYTE PTR DS:[ESI]
    7348F1C3    46              INC ESI
    7348F1C4    FF2485 58FA4873 JMP DWORD PTR DS:[EAX*4+7348FA58]
    7348F1CB    33C0            XOR EAX,EAX
    7348F1CD    8A46 02         MOV AL,BYTE PTR DS:[ESI+2]
    7348F1D0    83C6 03         ADD ESI,3
    7348F1D3    FF2485 58FA4873 JMP DWORD PTR DS:[EAX*4+7348FA58]
    7348F1DA    833C24 00       CMP DWORD PTR SS:[ESP],0

    程序处于msvbvm60领空,该跳转在运行88次后开始判断文件大小,如果大于原始大小就退出
    如果改为je后运行,程序按钮上的标题全部为空
    再追,发现第89次运行该处时判断大小,如果大小符合条件,程序还会再调用该处42次
    改为je后运行就会出错
    调试状态下第89次运行该处跳转改为je,f8后再改回来,程序运行正常。

    现在的问题是如何破解这个自校验呢?/:0111" />1" /> 烦请高手指点!感激不尽!:loveliness:
    程序也打包在附件供参考,谢谢!

    [ 本帖最后由 beijingren 于 2009-7-1 11:45 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-6-29 22:10:47 | 显示全部楼层
    系统里的可以做LPK补丁
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2025-1-6 18:17
  • 签到天数: 153 天

    [LV.7]常住居民III

     楼主| 发表于 2009-6-30 07:09:51 | 显示全部楼层
    tianxj老大能否详细说明一下呢?小弟不才,baidu+google+pyg都没有搜索到详细说明。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-7-21 10:19
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2009-6-30 18:29:13 | 显示全部楼层
    P-Code的程序,你可以用VBExplorer分析下,看Form1的Load事件代码:

    ***********Reference To:[propget]App.EXEName
                                  |
    :00410DF0  0D58001700                      VCallHresult               ;Call ptr_00408CFC
    :00410DF5  3EE4FE                          FLdZeroAd                  ;Push DWORD [LOCAL_011C]; [LOCAL_011C]=0
    :00410DF8  46D4FE                          CVarStr                    ;
    :00410DFB  FBEFC4FE                        ConcatVar                  ;
    ******Possible String Ref To->".exe"
                                   |
    :00410DFF  3AB4FE1A00                      LitVarStr                  ;PushVarString ptr_00408D18
    :00410E04  FBEFA4FE                        ConcatVar                  ;
    :00410E08  FCF694FE                        FStVar                     ;
    :00410E0C  2F6CFF                          FFree1Str                  ;SysFreeString [LOCAL_0094]; [LOCAL_0094]=0
    :00410E0F  29060078FF70FFE8                FFreeAd                    ;
    :00410E18  3610005CFF3CFF1C                FFreeVar                   ;Free 0010/2 variants
    :00410E2B  001A                            LargeBos                   ;IDE beginning of line with 1A byte codes
    :00410E2D  0494FE                          FLdRfVar                   ;Push LOCAL_016C
    :00410E30  FDFE74FF                        CStrVarVal                 ;
    **********Reference To->msvbvm60.rtcFileLen ---  取得文件大小  
                                   |
    :00410E34  5E1B000400                      ImpAdCallI2                ;Call ptr_00401094; check stack 0004; Push EAX
    :00410E39  F5D0010100                      LitI4                      ;Push 000101D0     --与这个数比较(66000字节)   
    :00410E3E  DB                              GtI4                       ;Push (Pop1 > Pop2)
    :00410E3F  2F74FF                          FFree1Str                  ;SysFreeString [LOCAL_008C]; [LOCAL_008C]=0
    :00410E42  1CE400                          BranchF                    ;If Pop=0 then ESI=00410E4C

    ==========
    修改方法:OD载入,修改410e3A处的值大于脱壳后的文件即可
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2025-1-6 18:17
  • 签到天数: 153 天

    [LV.7]常住居民III

     楼主| 发表于 2009-6-30 21:25:00 | 显示全部楼层
    改好了,呵呵
    代码如下:
    00410E30    FD              STD
    00410E31    FE              ???                                      ; 未知命令
    00410E32    74 FF           JE SHORT 1.00410E33
    00410E34    5E              POP ESI
    00410E35    1B00            SBB EAX,DWORD PTR DS:[EAX]
    00410E37    04 00           ADD AL,0
    00410E39    F5              CMC
    00410E3A    D001            ROL BYTE PTR DS:[ECX],1         ///二进制编辑---改为FFFF
    00410E3C    0100            ADD DWORD PTR DS:[EAX],EAX
    00410E3E    DB2F            FLD TBYTE PTR DS:[EDI]
    00410E40    74 FF           JE SHORT 1.00410E41
    00410E42    1C E4           SBB AL,0E4
    00410E44    0000            ADD BYTE PTR DS:[EAX],AL
    00410E46    04 FC           ADD AL,0FC
    00410E48    C8 000313       ENTER 300,13
    00410E4C    001D F4000478   ADD BYTE PTR DS:[780400F4],BL
    运行程序成功!
    感谢roking、tianxj大大!!!!!!!!
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-7-1 07:12:19 | 显示全部楼层
    学习了,有收获。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表