跳至主要内容

手把手教你WINRAR 去广告 — 小白向

http://ift.tt/2j9fwde

前言

Winrar 是windows平台下一款非常强大的解压软件,免费版就已经够用了,但是老是弹广告实在是受不了啊,今天就教大家怎么去除winrar 的广告

工具

  • 32位Winrar
  • OllyDbg
  • spy++

熟悉软件流程

如图,只要想破解的就是去掉烦人的广告
用spy++ 查看窗口的类名 和窗口名

直接开干

首先,如果想要实时播放广告,肯定是需要进行网络请求的
可以考虑从以下几个点入手

  • socket相关API
  • 因为我以前从事过商业广告相关的业务,所以了解可能会有自己的广告链接地址到PDB,说不定http字符串没有加密呢LOL
  • 窗口创建方式,是createwindow 还是dialog

开始分析

找到安装目录下的exe 文件,拖进OD
先从最简单的搜索字符串开始分析,说不定人家就没有加密呢

果然没有加密,一下就搜到了

下断点,看是不是这个字符串

F9跑起来
可以看到果然断在了这里,证明我们下的断点是正确的

012B4535   .  68 F8BE3301   PUSH WinRAR.0133BEF8                     ;  http://ift.tt/2j9lta2
012B453A   .  E8 A17CFDFF   CALL WinRAR.0128C1E0
012B453F   .  8B0D F8703801 MOV ECX,DWORD PTR DS:[0x13870F8]         ;  跨Υ
012B4545   .  8D85 20100000 LEA EAX,DWORD PTR SS:[EBP+0x1020]
012B454B   .  6A 01         PUSH 0x1
012B454D   .  50            PUSH EAX
012B454E   .  6A 00         PUSH 0x0
012B4550   .  FF35 08713801 PUSH DWORD PTR DS:[0x1387108]
012B4556   .  FF35 70AF3701 PUSH DWORD PTR DS:[0x137AF70]            ;  WinRAR.01210000
012B455C   .  E8 6F900100   CALL WinRAR.012CD5D0                     ;  发现是使用CreateWindow创建的窗口
012B4561   .  833D 90BB3301>CMP DWORD PTR DS:[0x133BB90],0x0


简单了跟了2个函数,发现是通过CreateWindow创建的广告窗口
,所以说只要找到创建广告的函数,在里面跳过这个API就OK了,狠一点直接NOP掉

下 API 断点
bp CreateWindowExW

重新加载,注意仔细看窗口的名称

类名 和窗口名spy++ 找的一样,说明找到了,查看堆栈调用

栈回溯找到调用函数在这


012B4DB5      6A 00         PUSH 0x0                                 ; /lParam = NULL
012B4DB7      FF35 74AF3701 PUSH DWORD PTR DS:[0x137AF74]            ; |hInst = 01210000
012B4DBD      6A 00         PUSH 0x0                                 ; |hMenu = NULL
012B4DBF      6A 00         PUSH 0x0                                 ; |hParent = NULL
012B4DC1      53            PUSH EBX                                 ; |Height
012B4DC2      56            PUSH ESI                                 ; |Width
012B4DC3      55            PUSH EBP                                 ; |Y
012B4DC4      FF7424 2C     PUSH DWORD PTR SS:[ESP+0x2C]             ; |X
012B4DC8      57            PUSH EDI                                 ; |Style
012B4DC9      68 D4313201   PUSH WinRAR.013231D4                     ; |WinRAR
012B4DCE      68 C4573201   PUSH WinRAR.013257C4                     ; |RarReminder
012B4DD3      6A 00         PUSH 0x0                                 ; |ExtStyle = 0
012B4DD5      FF15 A4053201 CALL DWORD PTR DS:[<&USER32.CreateWindow>; \CreateWindowExW


我是想直接jmp掉吧,广告请求就不关闭了,不知道是不是非得显示广告才算收益,毕竟人家都免费了,只要不烦到我就好

因为我的OD蹦了一次,这个程序重定位我也没有关,所以下面的地址可能会不同,但是思路是一样的

00AF4DA6  |> \68 00010000   PUSH 0x100
00AF4DAB  |.  68 F8BEB700   PUSH WinRAR.00B7BEF8                     ;  http://ift.tt/2j9lta2
00AF4DB0  |.  E8 1BF3FFFF   CALL WinRAR.00AF40D0
00AF4DB5      EB 24         JMP SHORT WinRAR.00AF4DDB                ;  直接改成jmp,跳过这个函数
00AF4DB7  |.  FF35 74AFBB00 PUSH DWORD PTR DS:[0xBBAF74]             ; |hInst = 00A50000
00AF4DBD  |.  6A 00         PUSH 0x0                                 ; |hMenu = NULL
00AF4DBF  |.  6A 00         PUSH 0x0                                 ; |hParent = NULL
00AF4DC1  |.  53            PUSH EBX                                 ; |Height
00AF4DC2  |.  56            PUSH ESI                                 ; |Width
00AF4DC3  |.  55            PUSH EBP                                 ; |Y
00AF4DC4  |.  FF7424 2C     PUSH DWORD PTR SS:[ESP+0x2C]             ; |X
00AF4DC8  |.  57            PUSH EDI                                 ; |Style
00AF4DC9  |.  68 D431B600   PUSH WinRAR.00B631D4                     ; |WinRAR
00AF4DCE  |.  68 C457B600   PUSH WinRAR.00B657C4                     ; |RarReminder
00AF4DD3  |.  6A 00         PUSH 0x0                                 ; |ExtStyle = 0
00AF4DD5  |.  FF15 A405B600 CALL DWORD PTR DS:[<&USER32.CreateWindow>; \CreateWindowExW
00AF4DDB  |.  F605 88BBB700>TEST BYTE PTR DS:[0xB7BB88],0x1
00AF4DE2  |.  5F            POP EDI
00AF4DE3  |.  5D            POP EBP
00AF4DE4  |.  74 13         JE SHORT WinRAR.00AF4DF9


保存

效果展示

烦人的广告没有了!!

The post 手把手教你WINRAR 去广告 — 小白向 appeared first on cole.

http://ift.tt/2j9vuUP reverse engineering, reverse, 破解, 逆向 December 02, 2017 at 11:13AM

评论

此博客中的热门博文

反Hook 之自己实现GetProcAddress和LoadLibraryA(c++ version)

http://ift.tt/2AocAD0 // 课上练习.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> //要实现的功能: /* 自己实现GerProcAddress LoadLibraryA */ //思路: /* GerProcAddress和LoadLibraryA都是在Kernel32.dll中的 首要的任务就是找到Kernel32.dll,然后遍历IAT就能找到这两个函数 现在首要的难点就是如何找到kernel32.dll() 通过dll的加载顺序可以找到,而且虽然需要使用未文档化的API,但是好在windgb可以直接看,而且用到的也并不是很多 懒得去晚上搜了,直接自己实现一个得了,作为演示,能用就行(最好还是搜一个正规的结构体) */ /* 0: kd> dt _TEB /a nt!_TEB +0x000 NtTib : _NT_TIB +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId : _CLIENT_ID +0x028 ActiveRpcHandle : Ptr32 Void +0x02c ThreadLocalStoragePointer : Ptr32 Void +0x030 ProcessEnvironmentBlock : Ptr32 _PEB //首先实现部分TEB结构体,因为只需要用的PEB的部分,所以实现到这就ok了 */ //构建 TEB typedef struct _TEB { //保证0x30是peb的结构体就ok了 struct _tem { DWORD a1; DWORD a2; DWORD a3; DWORD a4; DWORD a5; DWORD a6; DWORD a7; DWORD a8; DWORD a9; DWORD a10; ...

IDA动态调试ELF中遇到的问题(1)

https://ift.tt/2Gxnf2F 遇到 got SIGCHLD singal(child status has changed)...这种提示 singal fork了子进程 直接点yes,然后继续单步执行,出来提示 pass to application就行了 内存查看 用od习惯了之后,凡事都想右键看一下内存,但是IDA中好像没有那么如意, 目前只是在栈中右键发现有查看hex的选项 动态调试的时候的nop ida保存动态调试的时候修改的数据 方法一:在程序运行的时候保存 The post IDA动态调试ELF中遇到的问题(1) appeared first on cole . https://ift.tt/2q9Qf5g WHATEVER April 05, 2018 at 09:44AM

数据库(MySQL)编程之数据库和表的基本操作

http://ift.tt/2gOXg6X     数据库和表的基本操作 操作前的基本知识 基本 sql语句不区分大小写(关键字建议用大小写),但字符串常量区分大小写 sql语句可单行或多行书写,以; 结尾 关键字不能跨行或简写 可以用空格或者缩进来提高可读性 注释 sql标准 /**/ : 多行注释 "--":单行注释 mysql 标准: "#":单行注释 "COMMENT":为字段或列添加注释 创建和查看数据库 创建数据库 模板 CREATE DATABASE [IF NOT EXISTS ] db_name create_specification: IF NOT EXITSTS : 检查数据库是否存在,如果存在就不创建 creat_specification :创建条件 CHARACTER SET: 制定数据聚采用的字符集 COLLATE :制定数据库字符集的比较方式 DEFAULT :表示默认内容,即使没有制定该项,也有默认的值 # 创建数据库使用字符集为 UTF-8 ,使用规则为 uftf_bin CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE uft8_bin; 一般默认的数据库就是utf8 和utf8_bin的比较方式,因此一般创建数据库的时候都用 CREATE DATABASE db_name mysql> create database testdb; Query OK, 1 row affected (0.02 sec) 查看数据库 命令 SHOW DATABASES     mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | testdb | |...