首页
社区
课程
招聘
[原创]分析过程记录
发表于: 2019-3-18 15:11 3065

[原创]分析过程记录

2019-3-18 15:11
3065
一看是Delphi程序,用dede分析,得知一个窗口几个click函数。
打开后界面很正常,调试器附加,在所有click函数下断点,输入字符后点击Check,所有断点无法断下。
在跳出错误窗口时候中断,发现堆栈中有mshtml.dll的函数,相信是mhtml制作的界面。
再仔细观察,是通过javascript脚本在WebBrowser来实现的界面,于是搜索WebBrowser如何调试.
根据大神的介绍
https://weblog.west-wind.com/posts/2017/jul/06/javascript-debugging-in-a-web-browser-control-with-visual-studio
使用VS脚本模式附加程序,得到eval计算的脚本结果。只找到部分key的明文。
各种姿势尝试数个小时,相信关键就在sptWBCallback,看了数遍脚本,灵机一动,可能是在TWebBrowser对象中有url hook。
在程序的TWebBrowser类中寻找未果,Form的procedure中也没有有关的回调。
在FromCreate初始化函数中,找到修改TWebBrowser对象的代码,设置了函数492088

从中知道key的后续半部分必须是4位,这时有两个选择,1是暴力破解,2是继续分析。
继续分析:
在这个函数中发现解析opcode的代码,将附在PE文件后的代码反汇编,并写入到堆栈中执行。
对栈和VM结构操作的代码都在sub_471FC4中循环执行了。
当遇到jcc和call时进行特别的判断。
jcc时判断eflag跳转,则修改堆栈中jcc指令为NOP,调用sub_471F04 跳过之后的opcode。
call则修复call的地址的偏移

尝试在调用反汇编出的指令前下断点,从堆栈得到
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//