qq伴侣2.44绿化去广告[VB-Pcode静态分析]
本帖最后由 sjg00000 于 2009-11-20 11:11 编辑1.脱壳
ASP脱壳的办法是在太多了,脱壳机、脚本、ESP定律等等。
OD载入后使用一次ESP定律就可以看到OEP躺在那里,使用自带插件Dump
2.去自校验
脱壳后运行程序没有窗口一闪而过。很明显是自校验了。
对于VB的自校验,如果是比较文件大小的,可以在od下BP rtcFileLen断点。不过qq伴侣无法断下。
首先介绍一下和VB跳转有关的伪代码:
Branch(无条件跳转,机器码是1E)
BranchF(堆栈值为0则跳,机器码是1C)
BranchT(堆栈值是-1则跳,机器码是1D)
ExitProcHresult(过程调用结束返回,相当于OD中的Retn,机器码是13)
使用vbexplorer载入
在mian的From_load中我们可以发现
:0045EF131C3A01 BranchF ;If Pop=0 then ESI=0045EF1A
:0045EF160004 LargeBos ;IDE beginning of line with 04 byte codes
:0045EF18FCC800 End ;
0045EF13的跳转就有很大的嫌疑,因为如果不跳走,就要执行END了,这也太危险了。还是赶紧跳走吧。 用C32Asm把5EF13的数值1C改成1E(无条件跳转,相当于自校验失效)或者1D(文件的大小不在设定大小范围内则跳转),当然修改成1E更加稳妥。运行下程序,可以了~
3.去广告
一共有两个广告,第一个广告是首次启动时会询问是否把一个网址导航设为首页。第二个广告是打开主程序一段时间后会弹出一个网页广告。我们来各个击破:
A.首次运行主页广告
只有首次运行才会弹出,那么他肯定把已经弹出过得信息记录在了某个地方。于是去继续在伪代码中发掘。
如果你运行过是否设为主页的窗口,就会在注册表留下一个QQBanlv_HomePage的键值
******Possible String Ref To->"QQBanlv_HomePage"
|
:0045F2E21B3000 LitStr ;Push ptr_0041EB4C
**********Reference To->msvbvm60.rtcDateDiff
|
:0045F3260A36001800 ImpAdCallFPR4 ;Call ptr_0040119C; check stack 0018; Push EAX
:0045F32B0404FF FLdRfVar ;Push LOCAL_00FC
:0045F32EFBD9F4FE FnAbsVar ;
:0045F3322814FF0500 LitVarI2 ;PushVarInteger 0005
:0045F3375D HardType ;
:0045F338FB67 LtVarBool ;Push (Pop1 < Pop2)
:0045F33A36040038FF04FF FFreeVar ;Free 0004/2 variants
:0045F3411C7C05 BranchF ;If Pop=0 then ESI=0045F35C
:0045F3440015 LargeBos ;IDE beginning of line with 15 byte codes
:0045F3462714FF LitVar ;PushVar LOCAL_00EC
msvbvm60.rtcDateDiff比对字符是否相等的函数,也就是说看看是否保存过QQBanlv_HomePage键值,如果没有则弹出设置主页广告
BranchF就是关键跳转,这里不能让它跳走,C32Asm把0005F341的1C改为00
B.弹出广告
timer12控件为按钮广告和弹出网页控件
作者的timer控件有的还真够多的,还好他帮我们分门别类好了(估计太多了,不注释他自己也糊涂了)
timer12是响应广告用的。直接把Interval调为0就可以了
保存,测试。没有弹出广告了
我的还是2.43的,来更新下 谢谢分享......................... 这个不错喔!!!!!!!!!1 好用吗?我来试试。多谢了 感谢楼主分享! 感谢楼主分享! 支持下无广告的。 看一下!:victory:!:victory:!:victory: 好文章,呵呵