能力值:
( LV2,RANK:10 )
|
-
-
2 楼
星际2爱好者关注中
我转一段话过来,我也看不懂,不知道对你有没有帮助
粗略的看过一下,有一些技术很熟悉,大概就是CreateDebugProcess, WriteProcessMemory, Run, 再反过来A到父进程,这样就形成互相调试的进程了,不管是字进程还是父进程都无法带调试器。 想调试也很简单,由于相互调试,异常不会太复杂,模拟子进程很容易。 或者使用某个xxx调试器就可以直接调试了,貌似以前的LifeOdbg处理下也可调试,实在没能力破解,只能等补丁 星际争霸2文件都是没壳的,不过花指令特别多,尤其是b*n.dll。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我已经吧他的子进程dump出来了……
就是CHNHack.exe这个。
他的子进程啥都不是。纯粹就是用来打开的。
我用notepad也是一回事。
我琢磨着老外的模拟器也是卡在这步了,都是卡在了登陆大厅这里了。
那里我hook connect,死活改不掉他的relam的ip.登陆服务器已经搞定了。老外貌似和我一样。
连上relam就挂掉程序。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
他纯粹就是以DEBUG_PROCESS方式加载子程序,然后挂起。子程序屁都没有干,不知道怎么又把自己给DEBUG_PROCESS了。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
至于WriteProcessMemory,只是修改sc2.exe然后重新map加载,就是我dump出来的那个。我吧WriteProcessMemory hook了 return true.也不行。
至于Hook了CreateProcessW DEBUG_PROCESS只要不传,程序就跑不起来,他随便CreateProcessW啥都可以,会挂住子程序,也会挂住自己。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
呵呵,希望大家能多多帮助楼主啊
我就纯顶了
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
关键就是sc2.exe和子程序不是互相调试
而是sc2.exe不知道为什么要去调试自己创建的一个子程序。然后莫名其妙的吧自己给调试了。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
现在可以确定这么几个东西
1.在子程序没启动前,sc2.exe是可以附加的,没被调试
2.子程序启动后,执行过xxx行f8,sc2.exe就不能附加了,但是子程序屁都没干(非常肯定)
3.如何在一个程序启动后又挂住自己的啊?是啥api?可以取消掉他挂住吗?或者下断nop掉。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
反过来A到父进程,可以这样吗。如果可以就hook函数CreateDebugProcess试试
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
老外不是出了个破解 已经过了反调试的 你看看他杂过的
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
如果一个进程已经被调试了,OD貌似就无法再附加了。
你去掉他的DEBUG权限试试。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
9喽:CreateDebugProcess是干嘛的?以前没注意到过这个api...是说DEBUG_PROCESS吧?
DEBUG_PROCESS标志只要不加,星际2就会自动关闭,他这是怎么处理的?有什么思路吗?
10楼:你说的老外破解的那个。我分析过他的了。他是直接在CreateProcessW里调用ExitThread(0);
这样就可以附加调试了。但是不能联网,只要一联网,立马自动关闭。也就是说如果要联网,必须要有一个被调试的子进程
11喽:如何去掉?另,如果B被A调试,B不能被附加我知道,这无所谓,毕竟SC2.exe创建的子程序毛都没干,我直接让他启动notepad.exe游戏也可以正常运行,关键是如果B被A调试,那么A也不能附加?还是做了什么手段?(B被挂起,不可能去调试A,我都用notepad.exe就更不可能了)
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
试试拿Ring0的调试器,直接调它,比如说Softice,比如说Syser。当然要注意它有没有用Anti手段。
我觉得只要你调试了一个子进程,Ring3的调试器就不能附加了,不然调试Debug API还不得死锁啊?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
星际2什么时候出来啦?好久没关注了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
回13楼:A调试B,应该是B不能附加吧,A是可以附加的啊。而且B是挂住的,不可能去调试A(因为B用notepad跑结果也是一样),那么A是怎么把自己挂住的呢。我对创建的子进程没一点兴趣,这个完全是暴雪创建出来迷惑他人的,他不能调试就不能调试吧,毕竟他没有一点作用,关键就是如何调试A(SC2.exe)
回14楼:没几天……老外比我早一天发布了单机补丁。心疼啊。他们目前状态和我差不多,只能在不联网的情况下调试,但是这个单机补丁只能和机器人玩,要P V P,只能模拟战网,但是目前的情况下只要附加了调试,一旦联网,程序就挂掉了。
我很不理解这是为什么,
1.在A CreateProcessW B的时候,我附加上了A,这个时候,是可以附加的,但是不能联网,一旦联网,od就卡在某句话了(不是跑飞)。
2.在A CreateProcessW B的时候,返回Null,这个时候,是可以附加的,但是也不能联网,一旦联网,od就卡在某句话了(不是跑飞),不调试只要联网程序也会挂掉,因为他有判断子进程是否还在。
那么,在联网的时候,他应该有判断创建的B是否还存在(这个好解决)以及自己的程序是被自己挂住了还是别的调试器挂住了????(啥思路?)
而且,在联网前他就完成了对自己的挂钩。因为直接让程序跑完A B都不能附加(联网前,bp CreateProcessW之后的xxx行F8都可以 附加,所以也没办法单跟到底是哪句挂住了自己),
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
另外有几个比较郁闷的地方:
使用hosts文件修改服务器ip到127,本地127做个socket链接到官方socket,接到啥包都返回回去,客户端在接到第一个包就客户端提示错误了,什么错误的服务器链接,估计有判断是否为正确的ip.
那么我使用ws2_32.dll劫持connect
__asm{
push eax
mov eax,ptr[esp+4]
mov eax,ptr[eax+4]
判断是否为需要跳转的ip
mov ……
pop eax
}
这样转到本地来,然后本地创建一个socket,这个socket链接到官方socket,接到啥包都返回回去
这样就可以模拟了,可是在连接第二个Rleam服务器的时候,程序自动关闭了……
我不服气,我使用动态注入hook connect.
这样程序就不会自动关闭了。可是。连接第二个Rleam服务器,这个ip死活没有被我if到……
我的天网上显示的就是SC2.exe在和服务器进行连接。使用抓包软件也看不到这个链接的存在。。。
要知道,子进程是被挂住的,而且在我使用notepad的情况下,是不可能和服务器进行交互的。那么……?
难不成搞个全局钩子,挂住connect?
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
Lazytown单机可以了,要联网肯定不行,要验证Key的
以前的SC,WC3等都没有破解上BN的
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
以前的sc是因为单机本身可以pvp了,所以不需要破解。
我在战网上碰到了Lazytown的人了。
他和我说。dont attack me.大致就是让我挂在那,他在调试。
和他互相交换了一下进度,大家都差不多……
sc2不破解战网不行,不破解就没办法进行p v p……
要知道,大菠萝就有模拟器,wow也有模拟器,他们都是基于battle.net的 至于星际和wc3 完全没必要模拟了……
至于楼上说验证key的问题不大。模拟器就是来做这个工作的,还好我手上有两个实在为数不多的key…… 两个啊。卖掉都值不少钱了
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
看来是我错了,不过用Ring0的调试器直接进行调试你试过了吗?
另外如果是控制台的程序,它貌似调试会被输入输出阻塞。系统在这方面的处理貌似和Win32规则不同?
你可以调试cmd.exe看看能不能找到在按下键盘的时候,断点中断。没记错的话,应该是不可以的。
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
子程序虽然是控制台的,但是被挂住了,而且换成notepad也不影响使用,所以说子程序完全不影响主程序的使用,简直是莫名其妙。
至于ring0…… 我下班回家晚上装个softice试试。说实话。比较害怕,我对softice没什么信心。。。不是很熟……
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
A 创建 调试 B进程,
B虽然无功能,随便换个NOTEPAD也可以
估计A里面还有几个调试的线程,一直在运行时候判断调试的B是否正确
但是为什么B也无法被附加,搂主可以写个这样的程序试试
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
刚说错了
A 创建 调试 B进程,
B虽然无功能,随便换个NOTEPAD也可以
估计A里面还有几个调试的线程,一直在运行时候判断调试的B是否正确
A是不是后来还创建了一个远程线程之类的东西在B里面,动态更改了B的执行代码,然后在B里面调试A?
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
回22:我一开始也是这么想的,可是后来我干脆hook了WriteProcessMemory,直接return true了……
B不能附加无所谓的,关键是他自己怎么也无法附加了,很纳闷
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
条件1:只要CreateProcessW我直接ExitThread(0),那么,A是可以附加的,不过联网后会报错。
条件2:B程序是挂着的,并且我hook了WriteProcessMemory,直接返回true.所以不可能是B来调试的A
也就是说那么,也就是在CreateProcessW这个线程里,A吧自己给调试了……
有谁知道这样做的做法是如何做到的吗?该怎么下断?
他这种做法还真值得学习,虽然没有壳,更胜一层壳
|
能力值:
( LV13,RANK:970 )
|
-
-
25 楼
我原本也很热血冲动地想搞个这,但冥冥之中想起来了两个字:老外。只要有老外在,你就不用搞了,把自己累死也搞不过他们,因为他们天天没事专搞这个,搞出来还要开源满世界发满世界改,所以搞不过他们的,因此,送兄弟两句话:珍爱生命,远离老外。
另外问一下,你们搞这个是为啥?学生没事干还是什么组织内的爱好或者啥别的什么的?
|
|
|