吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12982|回复: 41
收起左侧

[分享] 从4个点坐标入手,暴力去水印

  [复制链接]
冥界3大法王 发表于 2019-4-12 16:34
本帖最后由 冥界3大法王 于 2019-4-13 17:40 编辑

这是这个贴子的由来:https://www.52pojie.cn/thread-922660-1-1.html

本人最近使用了Delphi 10.3.1注册版,网上这个天价RichViewEdit只有最新的版本才兼容
很无奈,网上只能找到demo版本,而老的PJ版本却无法正常的使用,没办法,请来老魔的OD开始动手术吧。
由于以前分析过,所以知道使用了下面的这个函数
00549473   .  0FB705 7A507D>movzx eax, word ptr ds:[7D507A]          ; |
0054947A   .  50            push eax                                 ; |Property = 1
0054947B   .  8B83 88020000 mov eax, dword ptr ds:[ebx+288]          ; |
00549481   .  50            push eax                                 ; |hWnd = 00000001
00549482   .  E8 6DD9ECFF   call <jmp.&user32.SetPropW>              ; \SetPropW
00549487   .  56            push esi                                 ; /hData = NULL
00549488   .  0FB705 78507D>movzx eax, word ptr ds:[7D5078]          ; |
0054948F   .  50            push eax                                 ; |Property = 1
00549490   .  8B83 88020000 mov eax, dword ptr ds:[ebx+288]          ; |
00549496   .  50            push eax                                 ; |hWnd = 00000001
00549497   .  E8 58D9ECFF   call <jmp.&user32.SetPropW>              ; \SetPropW

005F27A6  |.  E8 65ACF5FF   call Project1.0054D410
005F27AB  |.  81E6 FFFFF7FF and esi, FFF7FFFF
005F27B1  |.  56            push esi                                 ; /NewValue = 10000
005F27B2  |.  6A EC         push -14                                 ; |Index = GWL_EXSTYLE
005F27B4  |.  50            push eax                                 ; |hWnd = 0329A020
005F27B5  |.  E8 8A49E2FF   call <jmp.&user32.SetWindowLongW>        ; \SetWindowLongW
005F27BA  |.  68 85040000   push 485
005F27BF  |.  6A 00         push 0
005F27C1  |.  6A 00         push 0
005F27C3  |.  8BC3          mov eax, ebx
005F27C5  |.  E8 46ACF5FF   call Project1.0054D410
005F27CA  |.  50            push eax                                 ; |hWnd = 0329A020
005F27CB  |.  E8 3C45E2FF   call <jmp.&user32.RedrawWindow>          ; \RedrawWindow

005EFE78  |.  E8 176BE2FF   call <jmp.&user32.FillRect>              ; \FillRect
0019F68C   38012961  |hDC = 38012961
0019F690   0019F698  |pRect = 0019F698 {0.,0.,160.,17.}
0019F694   CA1029A6  \hBrush = CA1029A6

先在使用了RichViewEdit 17.6的Delphi 10.3.1里编译输出 EXE文件
然后WinHEX中打开它,搜索richview.com这个网址(千万别搜索TRichView unregistered)
Snap9.jpg
我们会发现 unregistered 这个字符的顺序很有意思,因为后面这个字符串是打乱顺序的加密的


如果从工程文件下手,网上说注册版才有源码,而网上的PJ版本对N多的文件打过了补丁(实在是太多了,上千个)
也就是说一个一个控件文件来打补丁很麻烦,且不好定位到。

所以我们从  左 顶 宽 高 四个坐标 入手 , 搜索字符串常量 A0(十进制的:160),搜索 17的16进制(改成0一样能把水印压扁)
通过EmEditor 几轮过滤
最后发现符合条件的 只有下面两个:
0070E104   push 0A0
007C0963   push 0A0

[Asm] 纯文本查看 复制代码
007C07BC  /.  55            push ebp
007C07BD  |.  8BEC          mov ebp, esp
007C07BF  |.  83C4 F0       add esp, -10
007C07C2  |.  832D 7C567D00>sub dword ptr ds:[7D567C], 1
007C07C9  |.  73 6C         jnb short Project1.007C0837
007C07CB  |.  B2 01         mov dl, 1
007C07CD  |.  A1 F4FE6200   mov eax, dword ptr ds:[62FEF4]
007C07D2  |.  E8 F507E7FF   call Project1.00630FCC
007C07D7  |.  A3 78567D00   mov dword ptr ds:[7D5678], eax
007C07DC  |.  8B15 D88A6100 mov edx, dword ptr ds:[618AD8]           ;  Project1.00618B30
007C07E2  |.  A1 78567D00   mov eax, dword ptr ds:[7D5678]
007C07E7  |.  E8 B808E7FF   call Project1.006310A4
007C07EC  |.  A1 70315100   mov eax, dword ptr ds:[513170]
007C07F1  |.  8945 F4       mov [local.3], eax
007C07F4  |.  A1 443B5100   mov eax, dword ptr ds:[513B44]
007C07F9  |.  8945 F8       mov [local.2], eax
007C07FC  |.  A1 C4285100   mov eax, dword ptr ds:[5128C4]
007C0801  |.  8945 FC       mov [local.1], eax
007C0804  |.  8D45 F4       lea eax, [local.3]
007C0807  |.  BA 02000000   mov edx, 2
007C080C  |.  E8 E7EBC9FF   call Project1.0045F3F8
007C0811  |.  A1 24415100   mov eax, dword ptr ds:[514124]
007C0816  |.  E8 69EBC9FF   call Project1.0045F384
007C081B  |.  A1 A8366000   mov eax, dword ptr ds:[6036A8]
007C0820  |.  8945 F0       mov [local.4], eax
007C0823  |.  8D45 F0       lea eax, [local.4]
007C0826  |.  33D2          xor edx, edx
007C0828  |.  E8 CBEBC9FF   call Project1.0045F3F8
007C082D  |.  A1 D88A6100   mov eax, dword ptr ds:[618AD8]
007C0832  |.  E8 4DEBC9FF   call Project1.0045F384
007C0837  |>  8BE5          mov esp, ebp
007C0839  |.  5D            pop ebp                                  ;  Project1.005F7AAA
007C083A  \.  C3            retn
007C083B      90            nop
007C083C   .  832D 80567D00>sub dword ptr ds:[7D5680], 1
007C0843   .  C3            retn
007C0844   .  832D 88567D00>sub dword ptr ds:[7D5688], 1
007C084B   .  73 11         jnb short Project1.007C085E
007C084D   .  B2 01         mov dl, 1
007C084F   .  A1 88A46300   mov eax, dword ptr ds:[63A488]
007C0854   .  E8 37AFE7FF   call Project1.0063B790
007C0859   .  A3 84567D00   mov dword ptr ds:[7D5684], eax
007C085E   >  C3            retn
007C085F      90            nop
007C0860   .  832D 8C567D00>sub dword ptr ds:[7D568C], 1
007C0867   .  C3            retn
007C0868   .  832D 90567D00>sub dword ptr ds:[7D5690], 1
007C086F   .  C3            retn
007C0870   .  832D 94567D00>sub dword ptr ds:[7D5694], 1
007C0877   .  73 20         jnb short Project1.007C0899
007C0879   .  8B15 84396800 mov edx, dword ptr ds:[683984]           ;  Project1.006839DC
007C087F   .  B8 32FFFFFF   mov eax, -0CE
007C0884   .  E8 D371F6FF   call Project1.00727A5C
007C0889   .  8B15 BC436800 mov edx, dword ptr ds:[6843BC]           ;  Project1.00684414
007C088F   .  B8 31FFFFFF   mov eax, -0CF
007C0894   .  E8 C371F6FF   call Project1.00727A5C
007C0899   >  C3            retn
007C089A      8BC0          mov eax, eax
007C089C   .  832D 98567D00>sub dword ptr ds:[7D5698], 1
007C08A3   .  73 10         jnb short Project1.007C08B5
007C08A5   .  8B15 A4FB6800 mov edx, dword ptr ds:[68FBA4]           ;  Project1.0068FBFC
007C08AB   .  B8 C4FFFFFF   mov eax, -3C
007C08B0   .  E8 A771F6FF   call Project1.00727A5C
007C08B5   >  C3            retn
007C08B6      8BC0          mov eax, eax
007C08B8   .  832D 9C567D00>sub dword ptr ds:[7D569C], 1
007C08BF   .  73 20         jnb short Project1.007C08E1
007C08C1   .  8B15 E0F36B00 mov edx, dword ptr ds:[6BF3E0]           ;  Project1.006BF438
007C08C7   .  B8 30FFFFFF   mov eax, -0D0
007C08CC   .  E8 8B71F6FF   call Project1.00727A5C
007C08D1   .  8B15 48F96B00 mov edx, dword ptr ds:[6BF948]           ;  Project1.006BF9A0
007C08D7   .  B8 2FFFFFFF   mov eax, -0D1
007C08DC   .  E8 7B71F6FF   call Project1.00727A5C
007C08E1   >  C3            retn
007C08E2      8BC0          mov eax, eax
007C08E4   .  832D A0567D00>sub dword ptr ds:[7D56A0], 1
007C08EB   .  73 30         jnb short Project1.007C091D
007C08ED   .  8B15 E0956E00 mov edx, dword ptr ds:[6E95E0]           ;  Project1.006E9638
007C08F3   .  B8 34FFFFFF   mov eax, -0CC
007C08F8   .  E8 5F71F6FF   call Project1.00727A5C
007C08FD   .  8B15 B8996E00 mov edx, dword ptr ds:[6E99B8]           ;  Project1.006E9A10
007C0903   .  B8 35FFFFFF   mov eax, -0CB
007C0908   .  E8 4F71F6FF   call Project1.00727A5C
007C090D   .  8B15 389F6E00 mov edx, dword ptr ds:[6E9F38]           ;  Project1.006E9F90
007C0913   .  B8 33FFFFFF   mov eax, -0CD
007C0918   .  E8 3F71F6FF   call Project1.00727A5C
007C091D   >  C3            retn
007C091E      8BC0          mov eax, eax
007C0920   .  53            push ebx
007C0921   .  56            push esi                                 ;  Project1.<ModuleEntryPoint>
007C0922   .  57            push edi                                 ;  Project1.<ModuleEntryPoint>
007C0923   .  BE AC567D00   mov esi, Project1.007D56AC
007C0928   .  832D A8567D00>sub dword ptr ds:[7D56A8], 1
007C092F   .  0F83 97000000 jnb Project1.007C09CC
007C0935   .  A1 4C206600   mov eax, dword ptr ds:[66204C]
007C093A   .  A3 A4567D00   mov dword ptr ds:[7D56A4], eax
007C093F   .  33DB          xor ebx, ebx
007C0941   .  33C9          xor ecx, ecx
007C0943   .  B2 01         mov dl, 1
007C0945   .  A1 08355E00   mov eax, dword ptr ds:[5E3508]
007C094A   .  E8 09ADE2FF   call Project1.005EB658
007C094F   .  8906          mov dword ptr ds:[esi], eax
007C0951   .  33D2          xor edx, edx
007C0953   .  8B06          mov eax, dword ptr ds:[esi]
007C0955   .  E8 22D1E2FF   call Project1.005EDA7C
007C095A   .  B2 03         mov dl, 3
007C095C   .  8B06          mov eax, dword ptr ds:[esi]
007C095E   .  E8 35D5E2FF   call Project1.005EDE98
007C0963   .  68 A0000000   push 0A0                                 ;  这个A0正好是160,我们改成 68 00000000    
007C0968   .  6A 11         push 11                                         ;  这个11正是 17,经过测试,并不是![color=magenta][u]希望楼下同学能找到传入11的地方。。。[/u][/color]
007C096A   .  B9 03000000   mov ecx, 3
007C096F   .  BA 03000000   mov edx, 3
007C0974   .  8B06          mov eax, dword ptr ds:[esi]
007C0976   .  8B38          mov edi, dword ptr ds:[eax]
007C0978   .  FF97 C8000000 call dword ptr ds:[edi+C8]
007C097E   .  66:BA 6500    mov dx, 65
007C0982   .  8B06          mov eax, dword ptr ds:[esi]
007C0984   .  E8 C739D8FF   call Project1.00544350
007C0989   .  8B06          mov eax, dword ptr ds:[esi]
007C098B   .  8998 64030000 mov dword ptr ds:[eax+364], ebx
007C0991   .  C780 60030000>mov dword ptr ds:[eax+360], Project1.007>
007C099B   .  8B06          mov eax, dword ptr ds:[esi]
007C099D   .  8998 24010000 mov dword ptr ds:[eax+124], ebx
007C09A3   .  C780 20010000>mov dword ptr ds:[eax+120], Project1.007>
007C09AD   .  8B06          mov eax, dword ptr ds:[esi]
007C09AF   .  E8 1014E3FF   call Project1.005F1DC4
007C09B4   .  8B06          mov eax, dword ptr ds:[esi]
007C09B6   .  E8 713DD8FF   call Project1.0054472C
007C09BB   .  68 2C010000   push 12C                                 ; /Timeout = 300. ms
007C09C0   .  E8 DFE4C6FF   call <jmp.&kernel32.Sleep>               ; \Sleep
007C09C5   .  8B06          mov eax, dword ptr ds:[esi]
007C09C7   .  E8 F013E3FF   call Project1.005F1DBC
007C09CC   >  5F            pop edi                                  ;  Project1.005F7AAA
007C09CD   .  5E            pop esi                                  ;  Project1.005F7AAA
007C09CE   .  5B            pop ebx                                  ;  Project1.005F7AAA
007C09CF   .  C3            retn


经过测试,
007C0963      68 A0000000   push 0                                   ;  修改这个的A0为00 即可解决
断下不远处,便是 0054B235     /EB 25         jmp short Project1.0054B25C  至此水印就简单的去掉了。


当然,我们也可以修改的更宽些,查看学习效果。
比如把这句改成:007C0963      68 96080000   push 896                                
Snap1.jpg
我们记住特征码,方便对生成的EXE打补丁就好了。(地址和方法)


另外,我们可以模仿来画个水印玩玩。
[Delphi] 纯文本查看 复制代码
procedure TForm1.Button1Click(Sender: TObject);
 begin
   Canvas.Pen.Width:=10;
   Canvas.Pen.Style:=psDash;
   Canvas.Pen.Color:=clred;
   Canvas.MoveTo(200,100);
   Canvas.lineto(300, 200);
   Canvas.Pen.Width:=100;
   Canvas.Rectangle(50,210,100,100);
 end;

Snap10.jpg
实现后的效果,基本与上面的类似。

======================================================================================
另外有意思的是:bp FillRect这个函数,Delphi 7版本中得到的是下面的信息
0019F784   00450EB5  /CALL to FillRect from 信手拈来.00450EB0
0019F788   0D012A59  |hDC = 0D012A59
0019F78C   0019F794  |pRect = 0019F794 {0.,0.,125.,17.}  可能所用的版本不相同,产生的水印大小不同吧。(竟然是125: 7D)
0019F790   491025B1  \hBrush = 491025B1
我们同样上面的操作方式:
0052B064   push 7D
00531871   push 7D
找到两处修改后,水印也成功去除了。
TIM图片20190412181616.png
=============================================
最后最后,为了更方便的给虚拟机中编译输出的EXE打补丁,我们使用命令行hextool 工具来搞个批处理一键式完成。
D:\全自动汇编修改\HexTool.exe 信手拈来按键帮你来.exe 1248369 2 6A00

另外还可以从刷子的颜色函数入手进行修改:
0051621C   .  50            push eax                                 ; /pLogbrush = 033285D0
0051621D   .  E8 9A01F0FF   call <jmp.&gdi32.CreateBrushIndirect>    ; \CreateBrushIndirect


CreateBrushIndirect,可以创建具有指定风格、颜色和模式的逻辑刷子。
中文名CreateBrushIndirect 速    查Windows NT 3.1、Windows 95以上 参    数lplb 函数功能创建指定风格颜色模式逻辑刷子
函数原型:HBRUSH CreateBrushlndirect(CONST LOGBRUSH *lplb);
参数:
lplb:指向LOGBRUSH结构的指针,该结构包含与刷子有关的信息。
返回值:如果函数执行成功,那么返回值标识一个逻辑刷子;如果函数执行失败,则返回值为NULL。
Windows NT:若想获得更多错误信息,请调用GetLastError函数。
备注:刷子就是系统用来对要填充图形的内部进行绘制的位图。


00514E49  |.  50            push eax                                 ; /Index = COLOR_SCROLLBAR
00514E4A  |.  E8 F51CF0FF   call <jmp.&user32.GetSysColor>           ; \GetSysColor
掌握的方法越多也就不会黔驴技穷。








免费评分

参与人数 19吾爱币 +21 热心值 +17 收起 理由
promrise + 1 + 1 热心回复!
JR嘉 + 1 + 1 用心讨论,共获提升!
wuaipojie1975 + 1 我很赞同!
songshaocheng + 1 谢谢@Thanks!
spll6 + 1 + 1 用心讨论,共获提升!
小学生一枚 + 1 + 1 热心回复!
chenyang1314 + 1 + 1 热心回复!
2751090 + 1 热心回复!
zzzain46 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
海天一色001 + 1 + 1 我很赞同!
长日鸿阳 + 1 + 1 我很赞同!
萨半岛 + 1 + 1 热心回复!
天山雪 + 1 + 1 谢谢@Thanks!
wuxinwudi + 1 + 1 热心回复!
wowwooww + 1 + 1 我很赞同!
云幻灭 + 1 + 1 用心讨论,共获提升!
拾光小青年 + 1 + 1 热心回复!
wmsuper + 3 + 1 谢谢@Thanks!
Saber + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xyxiong007 发表于 2019-4-12 17:50
本帖最后由 xyxiong007 于 2019-4-13 08:58 编辑
冥界3大法王 发表于 2019-4-12 17:46
测试一下。
好了吗?

好了,图片已经看到了。感谢分享。楼主技术了得。
zyc183369 发表于 2019-4-12 16:53
lzqtzs 发表于 2019-4-12 17:02
KPKP 发表于 2019-4-12 17:09
大佬牛逼啊
iso 发表于 2019-4-12 17:35
学习学习!!!!!!!!!
 楼主| 冥界3大法王 发表于 2019-4-12 17:46
Snap8.jpg
测试一下。
好了吗?
jaqq 发表于 2019-4-12 18:07
厉害,学习学习
hxd97244 发表于 2019-4-12 19:57
学习学习,就是不能出成品啊~
zjk414 发表于 2019-4-12 20:08
学习学习!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-29 16:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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