首页
社区
课程
招聘
[已解决] 跟踪一个exe调用另一个exe 200.00雪花
发表于: 2021-12-1 15:25 10146

[已解决] 跟踪一个exe调用另一个exe 200.00雪花

2021-12-1 15:25
10146

我用ollydbg跟踪一个A.exe,该程序调用了另一个B.exe,我想调试的是B.exe,我怎么能让B.exe的代码出现在ollydbg中?A.exe是要向B.exe发数据的。我勾选了ollydbg最新版的option选项里的Debug child processes,可是还不行呢。本人不是学计算机的,哪位大侠帮帮忙?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 3681
活跃值: (3273)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你这个是没办法实现的,只能开两个ollydbg调试
A.exe调试B.exe 通常是用命令行来传递数据进行初始化
命令行参数拷一下,在另一个ollydbg以相同的参数运行B.exe
B.exe运行后如果要和A.exe通讯,那么通常是读取文件方式或者是内存共享
各下个断点就可以获取数据调试了
2021-12-2 09:36
0
雪    币: 6977
活跃值: (1786)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
用gflag去设置,当B进程启动的时候,调试器自动附加
2021-12-2 09:38
0
雪    币: 7114
活跃值: (4050)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在Ollydbg菜单下Option/Just-in-Time debugging中设置OD为即时调试器.将B.exe 的入口改为CC然后,记住原指令。此时直接运行A.exe其会调用B.exe,运行到INT3指令会异常,这时Ollydbg会启动,然后恢复原指令,继续调试就可以了。
2021-12-2 10:27
0
雪    币: 4741
活跃值: (4291)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
jit不会每次都成功 可以去到程序的入口点改一改jmp循环 让eip一直在原地循环 然后用调试器去附加
2021-12-2 10:36
0
雪    币: 423
活跃值: (501)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6

A调用B一般通过命令行传参数,可以像B注入一个dll,获取B执行时的命令行参数,然后OD里面设置命令行启动B,就可以调试B了
       //LPWSTR *szArglist;
       //int nArgs;
       //int i;
       //FILE *fp = fopen("D:\\debuglog.txt", "w");
       //szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
       //if (szArglist == NULL)
       //{
       //        MessageBox(NULL,"failed","提示", MB_ICONERROR);
       //}
       //else
       //{
       //        for (i = 0; i < nArgs; i++)
       //        {
       //                fprintf(fp, "%ws", szArglist[i]);
       //        }
       //        LocalFree(szArglist);
       //        fclose(fp);
       //}


拿到命令行后,在dbg或者OD里面直接复制参数 启动B

最后于 2021-12-2 11:03 被aimhack编辑 ,原因:
2021-12-2 11:01
0
雪    币: 3760
活跃值: (5921)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
7

之前调试word的公式编辑器程序,需要在EQNEDT32.EXE程序启动时挂到调试器上,使用如下方式 要调试子进程,采用修改注册表的方式来调试EQNEDT32.EXE程序。需要设置注册表项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE,如果没有此项,就新建一个。设置如下:

你这边可以新建一项 名称为 B.EXE,设置一个Debugger,是字符串,然后输入od的路径即可

2021-12-2 17:23
0
雪    币: 3
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
chinarenjf 在Ollydbg菜单下Option/Just-in-Time debugging中设置OD为即时调试器.将B.exe 的入口改为CC然后,记住原指令。此时直接运行A.exe其会调用B.exe,运行到I ...
启动了一个新的ollydbg窗口,但是显示"OllyDbg is unable to attach to process 0000204C as a "just in time" debugger"
2021-12-3 12:15
0
雪    币: 7114
活跃值: (4050)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是不是同时有两个调试器在调试B.EXE,检查下。
2021-12-4 10:02
0
雪    币: 3
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
用了chinarenjf和0346954的方法,可以了。谢谢大家了
2021-12-6 10:02
0
游客
登录 | 注册 方可回帖
返回
//