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

[原创]分析过程记录

2019-3-18 15:11
2508
一看是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的地址的偏移

尝试在调用反汇编出的指令前下断点,从堆栈得到
00198887   83C0 7F          ADD EAX,0x7F
00198887   33D2             XOR EDX,EDX
00198887   3BC2             CMP EAX,EDX   //edx 000000E0
00198887   75 52            JNZ SHORT 001988DB
00198887   EB 09            JMP SHORT 00198892
000A5036   83C0 7F          ADD EAX,0x7F
000A5036   3BC2             CMP EAX,EDX  //edx  b0
000A5043   83C0 7F          ADD EAX,0x7F
...........
后面的edx依次是
//B1
//B2

观察到eax为输入的后4位的值,计算得到eax依次应为
a 1 2 3

一试果然,
simpower91a123



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回