首页
社区
课程
招聘
[旧帖] [求助]程序运行起来之后,主线程退出,另一个线程起来 0.00雪花
2009-9-30 00:43 5990

[旧帖] [求助]程序运行起来之后,主线程退出,另一个线程起来 0.00雪花

2009-9-30 00:43
5990
如题,在跟踪的时候发现往内存里面写东西,之后主线程就退出,程序进入主界面,不知道是不是我OD的问题,attach时程序死掉,用什么办法可以把主程序弄出来?
下载链接 http://www.netcallfree.cn/gmlx.html
国产软件就不提名字了,如果违规,请版主删帖!

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sding 2009-9-30 09:04
2
0
没看明白,主线程退出,程序出就相应的退出了
雪    币: 83
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
atrm 2009-9-30 09:37
3
0
好多这种软件,我认为是调用另外exe
雪    币: 1489
活跃值: (955)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
仙果 19 2009-9-30 16:33
4
0
主线程退出了的哈,程序也应该要退出了
除非是另外开了一个进程!
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冰封星云 2009-9-30 16:58
5
0
只是一个单独的授权验证程序,验证通过了,就会调用主程序了(你后来看到的那个.exe),估计调用的时候是要传参数过去的
雪    币: 174
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鹰飞 2009-9-30 19:54
6
0
没有找到其它主程序啊,能不能说的清楚点
程序运行起来之后,在任务管理器看路径及名字都没有发生变化
雪    币: 263
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
still 2009-10-2 20:04
7
0
其实关于主线程退出,程序就退出是一个错误的说法!主线程退出程序退出的原因是编译器编译成EXE后擅自主张给主线程加了个ExitProcess,所以整个程序才会退出!
不信的话可以看以下例子,创建一个线程10秒钟后自动退出,程序会随着线程10后才退出

#include <windows.h>

#pragma comment(linker, "/ENTRY:main")
#pragma comment(linker, "/subsystem:windows")

DWORD WINAPI ThreadProc()
{
        Sleep(1000*10);
        return 0;
}

int main()
{
        CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,0,0,0);
        return 0;
}

不过有点答非所问哈,不好意思。上面这个代码用VC编译后就不会有ExitProcess的干扰,不会跟着主线程退出程序
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
reasly 2009-10-3 10:08
8
0
一点疑问 编译器能有这么智能么

http://www.pediy.com/bbshtml/bbs8/pediy8-743.htm

每个windows进程开始于它的被默认创建的第一个线程, 通常称其为主线程. 这种机制暗示了一个事实: 进程含有至少一个线程. 主线程和其它的线程没有任何区别, 每个线程都可以创建新的线程. 进程中所有线程都结束时进程会自动被结束, 而主动结束进程时, 如果还有线程没完成, 则系统自动结束这些线程.

雪    币: 263
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
still 2009-10-4 00:28
9
0
我曾经也相信过那句话,记得是WINDOWS核心编程里最先提到的,但是实验证明不是,主线程和其他线程是一样的,主线程结束了其它线程没有结束程序是默认不会退出,会等到所有线程都结束了才结束,编译器是会主动给主线程加一个ExitProcess函数,可以自己随便默认编写一个程序逆向下看看,我上面那个例子也是一个依据,那个例子编译出来的程序不会自动添加任何函数!如果你懒得逆向,可以正常编译一个程序,用PEID工具查看是否会多出很多函数(包括ExitProcess),再用PEID查看下我上面那个例子程序,不会多出任何一个没有用到的函数!
游客
登录 | 注册 方可回帖
返回