-
-
[讨论]dump memory to file on bochsdbg
-
发表于: 2015-9-27 21:52 3197
-
今天在逆向ultraIos制作的MBR, 发现MBR程序根据条件(硬盘是否支持int 13h 扩展), 将内存中的汇编指令动态改了.
这样导致IDA分析的被动态修改之前的MBR代码, 和修改之后的MBR代码不一样.
现在只能将修改后的MBR汇编代码Dump出来.
我是用bochsdbg单步调试的, 当代码被修改后, 需要用bochsdbg自带命令dump出来.
在自带帮助中看到有writemem命令, 但是没有调用的例子...
用google去查, 也没有发现有writemem的命令示例.
想起bochs是开源的工程, svn url = svn://svn.code.sf.net/p/bochs/code/trunk
迁出后, 在工程中,搜索这个命令的用法.
在 \bochs\bx_debug\parser.c 中找到了命令的使用格式.
在bochsdbg控制太中输入如下命令搞定
<bochs:164> writemem "test.bin" 0x600 512
<bochs:165> writemem "c:\test.bin" 0x600 512
其中, 文件名可以指定全路径.
看了下dump出来的bin文件, 和被动态修改后的MBR代码相同.
只能说bochs做的太贴心了, 我等屌丝要用到的功能都想到了, nice~
这样, 就可以将被动态修改后的MBR用IDA加载后,继续分析,可以分清楚不同条件下,读取磁盘扇区到内存的实现过程.
当代码被动态修改后, 大家是怎么继续分析整理逆向后的代码. 有没有更好的调试方法?
大家用bochs时,有什么好的调试命令用法组合或bochs自带帮助中没提到的用法, 请抛出砖头
这样导致IDA分析的被动态修改之前的MBR代码, 和修改之后的MBR代码不一样.
现在只能将修改后的MBR汇编代码Dump出来.
我是用bochsdbg单步调试的, 当代码被修改后, 需要用bochsdbg自带命令dump出来.
在自带帮助中看到有writemem命令, 但是没有调用的例子...
用google去查, 也没有发现有writemem的命令示例.
想起bochs是开源的工程, svn url = svn://svn.code.sf.net/p/bochs/code/trunk
迁出后, 在工程中,搜索这个命令的用法.
在 \bochs\bx_debug\parser.c 中找到了命令的使用格式.
case 215: #line 1109 "parser.y" /* yacc.c:1646 */ { dbg_printf("writemem <filename> <laddr> <len> - dump 'len' bytes of virtual memory starting from the linear address 'laddr' into the file\n"); free((yyvsp[-2].sval));free((yyvsp[-1].sval)); } #line 3488 "y.tab.c" /* yacc.c:1646 */ break;
在bochsdbg控制太中输入如下命令搞定
<bochs:164> writemem "test.bin" 0x600 512
<bochs:165> writemem "c:\test.bin" 0x600 512
其中, 文件名可以指定全路径.
看了下dump出来的bin文件, 和被动态修改后的MBR代码相同.
只能说bochs做的太贴心了, 我等屌丝要用到的功能都想到了, nice~
这样, 就可以将被动态修改后的MBR用IDA加载后,继续分析,可以分清楚不同条件下,读取磁盘扇区到内存的实现过程.
当代码被动态修改后, 大家是怎么继续分析整理逆向后的代码. 有没有更好的调试方法?
大家用bochs时,有什么好的调试命令用法组合或bochs自带帮助中没提到的用法, 请抛出砖头
赞赏
他的文章
看原图
赞赏
雪币:
留言: