windows逆向4

C++数据结构-map
C++-MFC 程序
C++-MFC 程序分析-00
010Editor 分析
WinRAR 去广告分析

  1. 虚函数的调用在反汇编中有什么形式?
    ① 类对象.虚函数,反汇编和调用普通成员函数一样,call offset
    ② 类对象->虚函数,反汇编中使用的是寄存器调用,访问了虚函数表中的函数

  2. 数据结构逆向的重点在于分析什么?
    重点分析数据,数据的引用、数据的变化,从而推理数据的结构

C++数据结构-map
Map 的特点就是查询速度快
stl 库的中 Map 是平衡二叉树的一种,叫做红黑树

C++-MFC 程序
MFC 程序,可能藏匿初始化代码或是反调试代码的地方:
① 全局对象的构造函数
C 运行的 inittem 函数

image.png

② theApp 对象中的 InitInstance


image.png

③ 对话框对象中的 OnInitDialog


image.png
image.png

return pDlg->OnInitDialog();
00D3786E 8B 4D FC mov ecx,dword ptr [ebp-4]
00D37871 8B 11 mov edx,dword ptr [ecx]
00D37873 8B F4 mov esi,esp
00D37875 8B 82 80 01 00 00 mov eax,dword ptr [edx+180h]
00D3787B 89 45 F8 mov dword ptr [ebp-8],eax
00D3787E 8B 4D F8 mov ecx,dword ptr [ebp-8]
00D37881 E8 72 2C FB FF call @_guard_check_icall@4 (0CEA4F8h)
00D37886 8B 4D FC mov ecx,dword ptr [ebp-4]
00D37889 FF 55 F8 call dword ptr [ebp-8]

④ 按钮响应事件

image.png

Debug 版,静态编译
(pTarget->*mmf.pfnCmd_v_v)();
00D36821 8B F4 mov esi,esp
00D36823 8B 4D F8 mov ecx,dword ptr [mmf]
00D36826 89 4D B8 mov dword ptr [ebp-48h],ecx
00D36829 8B 4D B8 mov ecx,dword ptr [ebp-48h]
00D3682C E8 C7 3C FB FF call @_guard_check_icall@4 (0CEA4F8h)
00D36831 8B 4D 08 mov ecx,dword ptr [pTarget]
00D36834 FF 55 B8 call dword ptr [ebp-48h]

Release 版静态编译
(pTarget->*mmf.pfnCmd_v_v)();
010F7491 8B 4D 14 mov ecx,dword ptr [ebp+14h]
010F7494 E8 D9 0D 13 00 call 01228272
010F7499 8B CE mov ecx,esi
010F749B FF 55 14 call dword ptr [ebp+14h]

VS2013 Debug 静态编译
CALL DWORD PTR SS:[EBP-0x8]
VS2013 Release 版静态编译
CALL DWORD PTR SS:[EBP+0x14]
C++-MFC 程序分析-00
点亮按钮


image.png

分析:
① 下 API 断点,EnableWindow
② 字符串”开启 MFC 之门”
③ 激活按钮工具
④ 根据资源 ID,查找窗口句柄,再使用 API EnableWindow 点亮
查找和资源 ID 有关的代码

image.png

在每个代码上设置断点


image.png

⑤ 使用资源工具修改资源


image.png

010Editor 分析

  1. 信息收集(踩点)
    找到注册对话框,测试输入信息
    菜单-Tools-Register
image.png

测试有弹窗信息,可以从两个方向入手:
① API 下断, 和窗口、对话框有关的 api
② 搜索弹窗的字符串
安装目录的扫描:


image.png
  1. 逆向分析
    ① 字符串分析

010 Editor

Invalid name or password. Please enter your name and password exactly as given when you
purchased 010 Editor (make sure no quotes are included).


&OK

② API 下断

image.png
image.png

在多个 API 下断,当输入假的序列号时,单击检测序列号按钮,看是否会断下。
运气比较好,在 CreateWindowExW 断下,接下来栈回溯分析每一个调用。
有一个地方,有很多字符串提示,猜测这个地方离关键跳转比较接近。

  1. 破解程序
    ① 找到了关键跳转,只改关键跳转不行。


    image.png

特征:8B0D????????68894300006A09E8834363FF8B0D????????8BF881FFDB000000
② 在关键跳转附近,找到了关键函数

image.png

③ 在关键函数中找到了真正的验证函数,验证函数中有计算序列号的算法


image.png

如果想要计算序列号,需要跟踪验证函数,每一条语句,找出序列号计算的逻辑,提取算法。


image.png

WinRAR 去广告分析
CreateWindowEx 下断,找到广告窗口,修改代码,跳过创建窗口 API

image.png

你可能感兴趣的:(windows逆向4)