用汇编编写消息系统 (3) 窗体程序逆向入手思路

背景

拿到一个窗体程序该如何确定逆向的开始点

正文

我们先假设没有任何可搜索字符串,这一点笔者是遇到过的,所有字符串都是加密的,打印函数前一个函数会解密字符串,解密出“please input flag”之类的内容,然后再传参给print,有一种理论上可行但是非常不好弄的方法:动调,并动调至解密之后再去搜索字符串

要确定这个时机的前提几乎就是找到函数主体入口点(三者离的很近:main入口点,解密函数,print)

本文讲解几种一般方法

首先是直接运行,观察窗体特征,然后确定以下断点

通过窗体的样式确定MessageBox 的type参数,直接搜索push xxx指令一般来说只会搜到几条结果

是否使用了GetDlgItemText

该程序看起来有没有复杂的消息循环

这些都是很重要的断点位置,基本接近main函数入口点

另外对于有按钮,且按钮是关键扳机的窗体程序,我们可以在句柄页面找到特定按钮,直接断下按钮

按钮作为一种典型的状态机,拥有两种状态,我们还可以选择具体断下哪个状态(WM_LBUTTONUP和WM_LBUTTONDOWN)

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 kier Val
  • Visitors: | Views: