能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我能用ollydbg 打开该程序,但是设置断点后,不知道如何中断在我设置的断点。请各位高手给我指条明路.xiexie
|
能力值:
(RANK:260 )
|
-
-
3 楼
控制台程序一样使用WIN32的API,一样用OD调试。
至于断点,你必须明白只有当程序运行到断点处时才会触发调试器中断的,如果没有执行,当然不会有反应了。
比如,你在printf处下断点,那么只有当程序调用printf时才会中断,如果程序调用的是puts,那是不会中断的。
|
能力值:
( 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信息。根据错误信息,很容易找到相应的汇编代码,和相关的跳转指令。但是问题我前面说了,直接中断不行,无法执行
|
能力值:
(RANK:260 )
|
-
-
5 楼
1.控制台程序加载时就有控制台窗口,是系统创建的,不是程序创建的。
2.用OD载入程序时,在弹出的 “打开”对话框的最下面有一栏“参数”,在其中填上需要的参数,比如你这个例子中的bbb.exe,再点打开,参数就可以正确地传递给程序。
3.向控制台输入信息的函数有很多,并且代表控制台的文件不仅可以是stdout,很有可能是stderr,下断点后不中断,很可能你没有中断在正确的位置,或者是因为你没有给程序传递参数,程序直接就退出了。如果“输出”不容易找突破,就从“输入”,即它读取文件的地方下断点。常用断点有kernel32的CreateFile以及msvcrt的_open、fopen等。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
书大很有耐心啊,佩服佩服!很称职的版主!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
锦上添花一下,免得BZ说我水
SUBSYETM=WIN32 CONSOLE的,在程序代码开始执行之前,系统就会产生一个新的CMD窗口。如果强行把SUBSYSTEM改成WIN32 GUI,假设用的是VC编译,在CRT0的代码中会调用AllocConsol弄一个CMD窗口出来。
WriteConsole(),WriteFile()
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢你的详细回答。由于本人是第一次反编译win32 控制台程序,这个跟win32 gui还是有些不同的。我再根据你的提示去试试,谢谢啦。
|
|
|