逆向实战 1#去除流氓弹窗和浏览器主页绑定

环境 & 工具

  • win xp 32位 (还没学到处理ASLR等问题,而且懒得配环境,只能说ASLR一生之敌!)
  • 吾爱破解版ollydbg(大佬亲手调教)
  • PEiD(或别的查壳工具如exeinfope)
  • ImportREC
  • LordPE
  • Restorator

案例一

案例一行为分析

案例一主要行为:

  • 启动后,自动打开网页
  • 弹出消息窗口
  • 在启动20s、40s后,各打开一个网页
案例一脱壳

通过查壳工具发现程序加UPX壳

image-20211222233654206

尝试手脱

UPX是压缩壳,F8发现此时只有ESP寄存器值变红,说明程序正要为解压程序申请栈帧

于是选中esp,右键在数据窗口中跟随

image-20211223082842527

输入command:hr 0x12FFA4,在栈的ESP处增加硬件断点,当解压程序执行完毕时,为了堆栈平衡,esp将重新指向这个地址,此时解压程序返回的目标地址就是程序的入口点OEP(original entry point)

直接点击运行,程序停下时到达OEP附近

image-20211223084231120

F8跟进至长跳转,随后跟随跳转

image-20211223085020207

到达OEP

image-20211223145229588

用od插件或者LordPE把脱壳后程序dump出来

去除弹窗

想要去除弹窗,首先要知道弹窗是如何产生的

弹窗产生的类型主要为消息框弹窗浏览器弹窗

浏览器弹窗产生方法

主要可能由以下系统API产生

  • ShellExecuteA/W
  • WinExec
  • CreateProcessA/W
消息框弹窗产生方法
  • MessageBoxA/W
浏览器弹窗解决方法
  • 方法一 在C32Asm等文件查看软件中,查找浏览器打开的链接对应的(ASCII 或 UNICODE)字符,然后将对应内容填充为00,这个方法可以对应绝大部分浏览器弹窗问题image-20211223204502502

  • 方法二 对于少部分顽固浏览器弹窗而言,弹窗的地址是经过加密算法加密后进行保存的(可能性不大),此时可以在OD调试时,按下ctrl + G,然后跳转至程序调用这些系统API的位置下断点,随后让程序运行起来,在调用API时查看参数,确认是否广告弹窗来源

    image-20211223210545654

    在确认广告来源后,可以把调用函数的指令及前面的压栈过程用NOP指令填充,也可以把调用的整个过程的第一条指令改为retn指令

案例二

案例二行为分析法

这个案例会有两个广告,一个是打开20s后会出现一个无法关闭的小窗,并且在使用界面内有一个嵌入式广告,在打开的同时还会把浏览器的主页绑定为特定网页

image-20211223214210017

看到这里大多数人已经血压升高了吧 😄

案例二脱壳

使用案例的方法追踪esp进行脱壳 但是我失败了,还是手艺不精 :- (

实际上,这种方法找到的OEP是没有问题的,但是不知道为什么脱壳不完全,可能是dump工具的原因,PEiD浅层查壳发现已经脱壳完毕,但深度查壳后发现还有ASPACK壳残留,故使用脱壳机进行脱壳,

去除弹窗

这个弹窗的去除在脱壳完毕后显得尤为简单,将脱壳后程序拖进resource hacker,打开对话框选项,把对应的弹窗大小置零或者把对应资源直接删除即可

image-20211223213825646

image-20211223213915063

去除主页绑定
主页绑定方法

毫无疑问,还是通过系统API来实现此功能,这次出场的API分别是

  • RegCreateKeyExA/W

  • RegOpenKeyExA/W

  • RegDeleteKeyExA/W

修改方法

可以把调用函数的指令及前面的压栈过程用NOP指令填充,也可以把调用的整个过程的第一条指令改为retn指令

复现资源下载

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐