首页
社区
课程
招聘
[求助]如何反汇编win32 控制台程序(类似dos程序)?
发表于: 2009-2-9 09:27 6092

[求助]如何反汇编win32 控制台程序(类似dos程序)?

2009-2-9 09:27
6092
大家好,我是新手。问大家一个比较幼稚的问题。请问如何反汇编win32 控制台程序(类似dos程序)呢?
用OllyDbg可以吗?如果可以,如何进行?
还是必须用其他的的反编译debugger?
谢谢大家了!!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 159
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我能用ollydbg 打开该程序,但是设置断点后,不知道如何中断在我设置的断点。请各位高手给我指条明路.xiexie
2009-2-9 09:34
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
控制台程序一样使用WIN32的API,一样用OD调试。

至于断点,你必须明白只有当程序运行到断点处时才会触发调试器中断的,如果没有执行,当然不会有反应了。

比如,你在printf处下断点,那么只有当程序调用printf时才会中断,如果程序调用的是puts,那是不会中断的。
2009-2-9 10:35
0
雪    币: 159
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢版主提示。
但是我仍有不少疑惑;
(1)当我用od打开该win32控制台 (假定为aaa.exe)程序,我并没有点击F8运行,但是一dos程序窗口弹出(表明aaa被执行)。请问这是什么问题?
(2)直接运行aaa是无效的。正确运行aaa是需要 dos命令行下输入一文件名 bbb(如C:\aaa.exe bbb). 但是执行bbb之前,又有lic验证(lic也必须是单独文件)。我的问题是在od里,如何输入bbb并绕过lic验证,从而达到破解目的?
我根据dos窗口下的命令,很容易得到lic错误时的log信息。根据错误信息,很容易找到相应的汇编代码,和相关的跳转指令。但是问题我前面说了,直接中断不行,无法执行
2009-2-9 18:12
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
5
1.控制台程序加载时就有控制台窗口,是系统创建的,不是程序创建的。

2.用OD载入程序时,在弹出的 “打开”对话框的最下面有一栏“参数”,在其中填上需要的参数,比如你这个例子中的bbb.exe,再点打开,参数就可以正确地传递给程序。

3.向控制台输入信息的函数有很多,并且代表控制台的文件不仅可以是stdout,很有可能是stderr,下断点后不中断,很可能你没有中断在正确的位置,或者是因为你没有给程序传递参数,程序直接就退出了。如果“输出”不容易找突破,就从“输入”,即它读取文件的地方下断点。常用断点有kernel32的CreateFile以及msvcrt的_open、fopen等。
2009-2-9 19:41
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
书大很有耐心啊,佩服佩服!很称职的版主!
2009-2-9 19:51
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
锦上添花一下,免得BZ说我水
SUBSYETM=WIN32 CONSOLE的,在程序代码开始执行之前,系统就会产生一个新的CMD窗口。如果强行把SUBSYSTEM改成WIN32 GUI,假设用的是VC编译,在CRT0的代码中会调用AllocConsol弄一个CMD窗口出来。

WriteConsole(),WriteFile()
2009-2-9 19:54
0
雪    币: 159
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢你的详细回答。由于本人是第一次反编译win32 控制台程序,这个跟win32 gui还是有些不同的。我再根据你的提示去试试,谢谢啦。
2009-2-9 20:36
0
游客
登录 | 注册 方可回帖
返回
//