Bigasoft Total Video Converter6逆向思路分享
0x00:软件介绍
这款软件可以转换绝大部分视频和音频格式,非常值得推荐。
官方网站:http://www.bigasoft.com/total-video-converter.html
下载链接:http://www.bigasoft.com/downloads/b-total-video-converter.exe
官方介绍支持的格式如下:
0x01:提示信息
打开软件会出现注册提示,提示未注册有功能限制。
0x02:动态分析
使用x32dbg加载目标程序,点击F9运行,再次按F9直到x32dbg左下角出现“运行中”的提示,软件界面已经打开。
此时,点击x32dbg软件上方的“符号”选项卡,双击“videoconverter.exe”即目标程序名称。
双击之后会返回到程序的反汇编窗口,此时点击工具栏中的“A2”按钮进行字符串搜索,窗口会自动切换到“引用”选项卡。
再“引用”窗口,搜索字符串“unregister”找到三处位置,在每一处都设置好断点。
重新运行调试,连续按F9继续运行,软件会断在如图所示的字符串调用处,向上分析代码如图中所解释,在函数调用位置下断。
此处给我的思路是这个函数的返回值设置为非0值。即可达到不跳转到unregistered的目的。
重新运行调试,直到软件断在函数调用处,F7步入,来到videoconverter.4AC550这个函数内部。涉及到汇编代码如下:
为了继续分析函数的调用关系,先不要手动改这个函数的返回值。
004AC550 | E8 ABB70200 | call videoconverter.4D7D00 | 004AC555 | FF50 24 | call dword ptr ds:[eax+24] | 004AC558 | 85C0 | test eax,eax | 004AC55A | 0F95C0 | setne al | 004AC55D | C3 | ret | 004AC55E | CC | int3 |
由此可知eax的值来源于call dword ptr ds:[eax+24]这一处的赋值,在此处下断,继续重新运行调试。
再次连续F9运行,直到软件暂停在上一步设置的断点处,按F7步入,得到如下汇编代码:
到这里后先不用继续跟踪,分析下汇编代码。
004D7B70 | 6A 00 | push 0 | 004D7B72 | E8 09FFFFFF | call videoconverter.4D7A80 | 004D7B77 | 83C4 04 | add esp,4 | 004D7B7A | 85C0 | test eax,eax | 004D7B7C | 74 06 | je videoconverter.4D7B84 | 004D7B7E | B8 01000000 | mov eax,1 | 004D7B83 | C3 | ret | 004D7B84 | 6A 01 | push 1 | 004D7B86 | E8 F5FEFFFF | call videoconverter.4D7A80 | 004D7B8B | 83C4 04 | add esp,4 | 004D7B8E | F7D8 | neg eax | 004D7B90 | 1BC0 | sbb eax,eax | 004D7B92 | 83E0 02 | and eax,2 | 004D7B95 | C3 | ret |
分析得到eax的值来源于videoconverter.4D7A80这个函数的返回值,接着上一步的位置按"F7"步进到这个函数内部,这个函数要仔细分析和推敲,经过几次的重试和单步跟踪,
最后终于发现函数的返回值取决于xor eax,eax这一步,在此处下断点。
重新运行调试,直到断到上一步设置的断点处,将汇编代码改成"mov al,1"按F9运行,又会来到刚开始我们设置的断点处,如图所示。此时按F7单步跟踪,
来到这段代码处,
004AC550 | E8 ABB70200 | call videoconverter.4D7D00 | 004AC555 | FF50 24 |call dword ptr ds:[eax+24] | 004AC558 | 85C0 | test eax,eax | 004AC55A | 0F95C0 | setne al | 004AC55D | C3 | ret |
来到之前设置的断点call dword ptr ds:[eax+24],
按F7跟进,来到下面这段代码,发现此处会将eax的值至为0,将其改成“mov al,1”即可完成全部破解。
004CE860 | 33C0 | xor eax,eax | 004CE862 | C3 | ret |
上面的所有步骤所要达到的目的是将videoconverter.4AC55这个函数的最终返回值设置为1。
动态调试需要耐心,一遍一遍的设置断点,重新运行,观察函数返回值eax的值的变化。身为小菜的我们,希望您也可以学会这段破解。
感谢您发财的小手,给我的评分,谢谢,祝朋友们新春快乐,健康幸福。