Windows 下的逆向分析-实战1

admin 2023年3月12日20:39:58Windows 下的逆向分析-实战1已关闭评论83 views字数 1499阅读4分59秒阅读模式

环境信息

系统信息:Windows 10 、Thankpad T430I

涉及工具:x64dbg

测试程序:g1uj49us.exe(Thankpad T430I Bios update)

安装后释放的文件,默认安装驱动的程序是WINUPTP.exe

Windows 下的逆向分析-实战1

最近入手了一款Thankpad T430I 笔记本,想升级到最新的Bios(2019)但因电池原因(显示255%,软件获取不到电池信息),官方的升级程序检测不到电池导致无法升级。

Windows 下的逆向分析-实战1

网上搜索文章有说运行的时候加入 -sp参数可跳过电池检测,但测试发现此方法不适合g1uj49us,还有说通过winflash64 BIOS文件直接升级,开始的文章未涉及BIOS文件格式,理解错误导致测试失败

我执行了如下命令:

| 1 | WinFlash64 ``/64bit/tpnflhlp``.sys |
| --- | --------------------------------------- |

Windows 下的逆向分析-实战1

很显然运行失败了。

继续搜索相关文章,在这篇文章下得到了思路:

https://superuser.com/questions/1569417/how-to-update-lenovo-bios-on-a-t460-without-battery

On Lenovo ThinkPad X230i was enough to copy BIOS (.FL1) and ECP (.FL2) files to parent folder, where WinFlash64.exe is located then run cmd.exe as administrator and enter command:

cd \

WinFlash64.exe /file \$01D3000.FL1

注意到,当执行WINUPTP.exe 选择Update ThinkPad BIOS

Windows 下的逆向分析-实战1

点击Next后会在当前目录释放些文件

Windows 下的逆向分析-实战1

看到了升级需要的文件

| 1 | \$01D2000.FL1 |
| --- | ----------------- |

升级成功后的截图

Windows 下的逆向分析-实战1

逆向分析

测试结果说明,无电池也可升级成功(也没有BIOS电池),故想运行升级程序绕过这个检测

关键信息:

程序会将检测结果以弹窗的形式返回

Windows 下的逆向分析-实战1

弹窗后点击暂停

Windows 下的逆向分析-实战1

在栈找关键信息,鼠标滚轮下滑

// call调用函数的时候会将地址压入栈中,接着跳转到相关的地址,故可根据栈地址找相关的函数调用

Windows 下的逆向分析-实战1

看到了一些显示,继续寻找这个弹窗来自那里

| 1 | 00EFE454  003EC655  ``return to winuptp.003EC655 from ??? |
| --- | ---------------------------------------------------------------------- |

Windows 下的逆向分析-实战1

双击进入

Windows 下的逆向分析-实战1

上方call下断点

Windows 下的逆向分析-实战1

重新运行测试

Windows 下的逆向分析-实战1

运行后,弹窗

Windows 下的逆向分析-实战1

重新运行,看到有个判断执行此地址

Windows 下的逆向分析-实战1

让跳转不成立,程序异常退出

栈分析看到有几个返回,依次进入查看

Windows 下的逆向分析-实战1

0055E57C 007ED0AA return to winuptp.007ED0AA from winuptp.007EC60F

Windows 下的逆向分析-实战1

0055E598 007E30E9 return to winuptp.007E30E9 from winuptp.007ED07B

Windows 下的逆向分析-实战1

看到了OK字样

继续寻找看到了这串字符串:"AC adapter/Battery check...."

在入口点下断点(push ebp 常为函数入口点)

Windows 下的逆向分析-实战1

断下

Windows 下的逆向分析-实战1

正常,跳转执行(ZF = 1)

Windows 下的逆向分析-实战1

修改ZF值,使其不执行(ZF = 0)

// je/jz根据CMP比较结果进行跳转,若ZF=1 就会跳转

Windows 下的逆向分析-实战1

运行

Windows 下的逆向分析-实战1

已可成功升级,绕过了电池检测

备注:安全考虑,若条件允许升级的时候还是满足条件的好,避免升级出现故障。

此篇文章到此结束,有缘再见

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月12日20:39:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows 下的逆向分析-实战1http://cn-sec.com/archives/1599484.html