欢迎来到皮皮网网首页

【comm.jar 源码】【游戏移动源码】【复现pytorch源码】vb 源码之友 破解

来源:网易云梯计划源码 时间:2024-11-30 02:02:23

1.如何找到软件的源码源代码
2.有谁知道怎样破解万象管理员密码吗?
3.什么叫"加壳"?
4.什么是黑客?
5.TerminateProcess HOOK

vb 源码之友 破解

如何找到软件的源代码

       源码就是指编写的最原始程序的代码。运行的破解软件是要经过编写的,程序员编写程序的源码过程中需要他们的“语言”。音乐家用五线谱和音符,破解建筑师用图纸和笔,源码那程序员的破解comm.jar 源码工作的语言就是“源码”了。

       人们平时使用软件时就是源码程序把“源码”翻译成我们可直观的形式表现出来供我们使用的。[1]

       任何一个网站页面,破解换成源码就是源码一堆按一定格式书写的文字和符号,但我们的破解浏览器帮我们翻译成眼前的模样了

有谁知道怎样破解万象管理员密码吗?

       万象网管密码查询器vb版(附全部源码)

       《开篇》

        用VB做万象密码查询工具?!好像不可思议。源码首先声明:我是破解VB菜鸟!听一些同志在说VB坏话,源码

       所以就写下此文给大家看看,破解看看VB强不强!源码不对之处还请各位大虾包涵!

        zmworm大哥两年前就作了“万象管理员密码查询器”(后称“查询器”),真佩服,他好像是

       数学专业的呢!(俺们这些编程爱好者,必须要好好学数学)不知道大家注意到没有,有些密码

       无法查出!本人经过对万象的浅薄研究,用vb做出了新的游戏移动源码“查询器”,经测试(环境:win+万象

       网吧管理专家专业版.0)完全可行!现公布具体作法。

       《原理》

        1.用窗口句柄穷列法(据了解,一般情况下windows的窗口句柄多在-2以上,以下)。

        2.先执行“万象管理员设置程序”,即万象目录下的“ClientSetup.exe”(让他读密码),

       “输入数据”窗口出现后不要关闭他,打开本程序找密码!

       另外,使用本程序前请关闭如“windows优化大师”之类用Delphi写的程序。

        3.万象的密码存在于内存中!(关键所在,希望万象的设计者尽快改进)

        4.放万象管理员密码的文本框,他的类型为“TFlatEdit”(呵呵,万象是用Delphi编写的,用了

       FlatStyle平面界面控件)。

        5.希望大家不要和我一样:搞投机取巧。

       《实现》

        1.这里用到几个常用的API函数:FindWindow,SendMessage,GetClassName,WindowFromPoint

       ...(具体请看附带的源代码“FindManSrc.rar”)

        2.循环〔-2 to step 1 〕作为句柄,查找其内容,这样可以过滤掉没有内容的句柄。

        3.要查找 某种密码窗口的内容,需要其句柄和类型。复现pytorch源码因此可以先根据句柄找到其对应的类型,

       再判断此类型是否为“TFlatEdit”,如果是,就取得其内容?就是密码了啦!

        4.当然不一定在万象上试,有兴趣的还可以找其它程序的密码!

        5.例子程序的使用方法见其“帮助”按钮。

       《!!注意事项!!》

        1.本程序目的不在于 查出万象密码而去免费上网 或者 在网吧欲所欲为,只是为了探讨编程

       思路,请在小时之内删除此程序,以免引起不必要的误解!出问题作者概不负责!

        2.源代码对最终用户完全免费,请不要用于任何商业用途。有兴趣的朋友完善此程序后请发

       一份给我,先谢谢了!

       lanker.com)在年9月提出。当初的蓝客联盟(中国蓝客联盟)是一个非商业性的民间网络技术机构,联盟进行有组织有计划的计算机与网络安全技术方面的研究、交流、整理与推广工作,提倡自由、开放、平等、补仓指标源码互助的原则。同时还是一个民间的爱国团体,蓝盟的行动将时刻紧密结合时政,蓝盟的一切言论和行动都建立在爱国和维护中国尊严、主权与领土完整的基础上,蓝盟的声音和行动是中华民族气节的体现。中国蓝客联盟(LUC)简称蓝盟,组建于年月1日。年4月,公安部门受外交部压力开始调查此次事件,蓝盟核心人员在当月受到公安机关的传讯、调查,计算机被收缴送往上级公安厅取证、调查。后联盟被告知必须无条件无限期关闭网站,并永久停止使用“蓝客联盟”名号。

       年6月2日,蓝盟在IRC频道召开“中国蓝客联盟告别会”,与会几百位网友了解、见证了蓝盟的组建及被迫关闭的内幕。

       中国蓝客联盟只有一个,那便是年月至年6月间的 cnlanker.net,那是微源源码我们美好的回忆,那是

       曾经一起分享胜利的喜悦、共同度过那些灰暗的日子的唯一见证。可惜的是如今这个域名已不在国人手上。

       从年6月开始,任何自称蓝客联盟或蓝盟的组织、网站均属于其他网友的自发的个人行为,与最初的蓝盟

       毫无任何关系。

       现在的 cnlanker.com 是最初组建蓝盟的一群人的回忆,蓝盟永远不会重建。

       飞客 —— 电信网络的先行者!

       飞客,经常利用程控交换机的漏洞,进入并研究电信网络。

       虽然他们不出名,但对电信系统作出了很大的贡献!

       一.什么是黑客

       在力求当一个黑客前,我们要先了解什么是黑客

       Hacker -- 黑客

       热衷研究、撰写程序的专才,且必须具备乐于追根究底、穷究问题的特质。

       在黑客圈中,hacker一词无疑是带有正面的意义,例如system hacker熟悉操作系统的设计与维护;password hacker精于找出使用者的密码,若是computer hacker则是通晓计算机,可让计算机乖乖听话的高手。

       黑客基本上是一项业余嗜好,通常是出于自己的兴趣,而非为了赚钱或工作需要。

       根据开放原始码计划创始人Eric Raymond对此字的解释,hacker与cracker是分属两个不同世界的族群,基本差异在于,hacker是有建设性的,而cracker则专门搞破坏。

       hacker原意是指用斧头砍材的工人,最早被引进计算机圈则可追溯自年代。

       加州柏克莱大学计算机教授Brian Harvey在考证此字时曾写到,当时在麻省理工学院中(MIT)的学生通常分成两派,一是tool,意指乖乖牌学生,成绩都拿甲等;另一则是所谓的hacker,也就是常逃课,上课爱睡觉,但晚上却又精力充沛喜欢搞课外活动的学生。

       这跟计算机有什么关系?一开始并没有。不过当时hacker也有区分等级,就如同tool用成绩比高下一样。真正一流hacker并非整天不学无术,而是会热衷追求某种特殊嗜好,比如研究电话、铁道(模型或者真的)、科幻小说,无线电,或者是计算机。也因此后来才有所谓的computer hacker出现,意指计算机高手。

       对一个黑客来说,学会入侵和破解是必要的,但最主要的还是编程,毕竟,使用工具是体现别人的思路,而程序是自己的想法.一句话--编程实现一切!

       对于一个骇客来说,他们只追求入侵的快感,不在乎技术,他们不会编程,不知道入侵的具体细节.

       "黑客"在人们脑中的形象就是一个蓬头乱发,戴着高度眼镜,驼着背弓着腰,成天趴在电脑面前的人.其实黑客和正常人一模一样,他们并无什么特殊之处.有些人也许很少上电脑,成天运动,工作,但他们的技术和精神已经达到的黑客的标准,有些人天天爬在电脑前,到处瞎混,但他们仍不是黑客.

       人们总是认为黑客就是破坏者,其实从某种意义上来说,黑客也在为计算机技术的发展做出很大的贡献.如果没有高明的黑客,就没有资深的网管;如果没有完美的木马,就没有杰出的杀毒软件;没有了黑客,网络技术就很难发展下去.当然,网管其实也是黑客,如果他不知道别人怎么进攻,自己要怎么防守呢?

       黑客一词在圈外或媒体上通常被定义为:专门入侵他人系统进行不法行为的计算机高手。不过这类人士在hacker眼中是属于层次较低的cracker(骇客)。如果黑客是炸弹制造专家,那么CRACKER就是恐怖分子.

       现在,网络上出现了越来越多的Cracker,他们只会入侵,使用扫描器到处乱扫,用IP炸弹炸人家,毫无目的地入侵,破坏着,他们并无益于电脑技术的发展,反而有害于网络的安全和造成网络瘫痪,给人们带来巨大的经济和精神损失.

       我们不能做Cracker,我们要力求当HACKER!!

       二.HACKING的预备网络知识

       1.什么是IP

       IP就是一个地址,在外网没有一个IP是相同的,它就像身份证号码一样,给每台进入网络的电脑一个身份证号码.但是对于大部分用户来说,这个号码是不固定的,在你重新连接到INTERNET时,IP可能会被重新分配.不过有些机器申请了固定的IP,这样就便于其他电脑找到它,并提供服务.一般的IP的格式为: a.b.c.d (0 <= a,b,c,d <= )例如 ... , ... ..... 由.开头的是局域网的IP,.0.0.1是用来检测网络的自己的IP.就是说任何一台电脑来说,不管是否连接到INTERNET上,.0.0.1对于自己来说都是自己.就是说,每台电脑都是由4位的进制数组成的.

       2.什么是网络协议,数据包

       网络协议就是一套双方约定好的通信协议.就像对暗号一样,有特定的约定来达成连接.其中的"数据包就是一个一个

       (1) 面向连接的TCP协议

        TCP是面向连接的.“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP(Transmission Control

       Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

       (2) 面向非连接的UDP协议

        “面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

       附表:tcp协议和udp协议的差别

       |---------------------------------|

       | 属性\协议 |TCP |UDP |

       |------------+---------+----------|

       |是否连接 |面向连接 |面向非连接|

       |------------+---------+----------|

       |传输可靠性 |可靠 |不可靠 |

       |------------+---------+----------|

       |应用场合 |大量数据 |少量数据 |

       |------------+---------+----------|

       |速度 |慢 |快 |

       |---------------------------------|

       (3)什么是端口(PORT)

       PORT,意思为港口,但在电脑里叫端口.但是端口不是形象的,而是抽象的.电脑上有很多的端口(个),但是它们大部分都不开,每个网络连接都要用一个端口,就象把用一跟线把两个电脑连起来,插座就是端口.有些端口有他们特定的用途,例如网页服务器要开端口,FTP服务器要开端口

       常用端口

       --ftp 下载

       --telnet 远程登陆,入侵后打开给自己留后门

       -smtp 尽管重要,但似乎没什么可利用的

       --domain 同上

       --finger 可知道用户信息了,但是现在很少了

       --.net:/down/syslog.zip

        该软件的特色就是可以在后台记录所有运行过的程序和窗口名称,并且有具体的时期,以及登录的用户名,很恐怖哦!下面咱们来设陷阱吧!

        1.记录日志

        双击压缩包内的主程序,点击“软件试用”进入主界面,在“日志文件保存路径”处点击“浏览”选择保存路径并进行命名,这里保存在c:\winnt\log.txt。然后钩选“日志记录随计算机自动启动”。

        注意:

        a.为了防止黑客找到记录日志的文件,你可以用上面提到的命令:attrib +s +h c:\winnt\log.txt进行隐藏。

        b.最好不要将这个记录文件和上面的.txt放一个目录下,这样万一被发现其中一个,不至于使另一个也一同被发现。

        c.软件在“任务管理器”的进程中显示名称为“syslog”,而且未注册版本会在分钟后自动停止记录,所以只能用来对付菜鸟黑客啦!而且还得先花点“银子”,哈哈!

        接下来在“程序密码保护”处输入一个复杂点的密码,点击“开始日志”。这时软件会提醒你隐藏后的热键为“Ctrl+Q”,请记住这个热键,以后要唤出软件时就得靠它了。

        2.查看动作

        想知道这样设置后记录下来的东西是什么样吗?那就快来看看吧。怎么样?对这种记录结果你还满意吗?

TerminateProcess HOOK

       å¦‚何保证自己的程序不被关闭?

       å°±ç®—是一些进程软件也不可以关闭

       samba 我听过有人采用程序互相监控的方法来达到目的。

       ä½†è¿™æ ·å°±ä¼šå ç”¨ç³»ç»Ÿèµ„源。一个不加什么控件的纯窗体都要3占用MB内存,

       å¦‚果加上我本来的那个程序,岂不是要占去十几MB内存,这对于我那个小程序来讲不不可忍受的。

       è¯·é—®æœ‰ä»€ä¹ˆæ¯”较好的方法可以解决?有这方面的控件吗?先谢过大家了!

       ---------------------------------------------------------------

       åœ¨WINDOWS操作系统下,当我们无法结束或者不知道怎样结束一个程序的时候,或者是懒得去找“退出”按钮的时候,通常会按“CTRL+ALT+DEL”呼出任务管理器,找到想结束的程序,点一下“结束任务”就了事了,呵呵,虽然有点粗鲁,但大多数情况下都很有效,不是吗?

        设想一下,如果有这么一种软件,它所要做的工作就是对某个使用者在某台电脑上的活动作一定的限制,而又不能被使用者通过“结束任务”这种方式轻易地解除限制,那该怎么做?无非有这么三种方法:1.屏蔽“CTRL+ALT+DEL”这个热键的组合;2.让程序不出现在任务管理器的列表之中;3.让任务管理器无法杀掉这个任务。对于第一种方法,这样未免也太残酷了,用惯了“结束任务”这种方法的人会很不习惯的;对于第二种方法,在WINDOWS 9X下可以很轻易地使用注册服务进程的方法实现,但是对于WINDOWS NT架构的操作系统没有这个方法了,进程很难藏身,虽然仍然可以实现隐藏,但实现机制较为复杂;对于第三种方法,实现起来比较简单,我的作品:IPGate 网址过滤器 就是采用的这种方式防杀的,接下来我就来介绍这种方法。

        任务管理器的“结束任务”实际上就是强制终止进程,它所使用的杀手锏是一个叫做TerminateProcess()的Win API函数,我们来看看它的定义:

       BOOL TerminateProcess(

        HANDLE hProcess; // 将被结束进程的句柄

        UINT uExitCode; // 指定进程的退出码

       );

        看到这里,是不是觉得不必往下看都知道接下来要做什么:Hook TerminateProcess()函数,每次TerminateProcess()被调用的时候先判断企图结束的进程是否是我的进程,如果是的话就简单地返回一个错误码就可以了。真的是这么简单吗?先提出一个问题,如何根据hProcess判断它是否是我的进程的句柄?答案是:在我的进程当中先获得我的进程的句柄,然后通过进程间通讯机制传递给钩子函数,与hProcess进行比较不就行了?错!因为句柄是一个进程相关的值,不同进程中得到的我的进程的句柄的值在进程间进行比较是无意义的。

        怎么办?我们来考察一下我的hProcess它是如何得到的。一个进程只有它的进程ID是独一无二的,操作系统通过进程ID来标识一个进程,当某个程序要对这个进程进行访问的话,它首先得用OpenProcess这个函数并传入要访问的进程ID来获得进程的句柄,来看看它的参数:

       HANDLE OpenProcess(

       DWORD dwDesiredAccess, // 希望获得的访问权限

       BOOL bInheritHandle, // 指明是否希望所获得的句柄可以继承

       DWORD dwProcessId // 要访问的进程ID

       );

        脉络渐渐显现:在调用TerminateProcess()之前,必先调用OpenProcess(),而OpenProcess()的参数表中的dwProcessId是在系统范围内唯一确定的。得出结论:要Hook的函数不是TerminateProcess()而是OpenProcess(),在每次调用OpenProcess()的时候,我们先检查dwProcessId是否为我的进程的ID(利用进程间通讯机制),如果是的话就简单地返回一个错误码就可以了,任务管理器拿不到我的进程的句柄,它如何结束我的进程呢?

        至此,疑团全部揭开了。由Hook TerminateProcess()到Hook OpenProcess()的这个过程,体现了一个逆向思维的思想。其实我当初钻进了TerminateProcess()的死胡同里半天出也不来,但最终还是蹦出了灵感的火花,注意力转移到了OpenProcess()上面,实现了进程防杀。喜悦之余,将这心得体会拿出来与大家分享。

       ---------------------------------------------------------------

       è¦ä¸æˆ‘给你把我的可执行文件的源代码和动态连接库发给你好了

       åŠ¨æ€è¿žæŽ¥åº“你自己可以换掉

       å°±æ˜¯è¦æ³¨å…¥çš„那个

       ï¼Œæ³¨å…¥åˆ°çš„目标程序你自己设置

       ---------------------------------------------------------------

       å‘µå‘µï¼Œæˆ‘成功实现了:)

       é€šè¿‡setwindowshookex建立CBT的Hook,Hook DLL中加载API重定向,就可以达到全局有效的APIHOOK效果了,还要对MapFile操作,以便统一全局的参数

       ä¸‹è½½åœ°å€ï¼š/lysoft/projects/API Hook.rar

       by Liu Yang

       ---------------------------------------------------------------

       ä¸Šé¢çš„例子,很厉害的,不只是任务管理器,连别的第三方软件都奈何不得!

       ç¦æ­¢ CTRL+ALT+DELETE under XP and Win, 的方法,不过容易破解

       å¦å¤–,XP下Gina方法是不行的,我提供的Demo就没问题了。至于那个DLL是怎么写的,就不便公开了。调用接口就在代码中,呵呵,花了我3天功夫才搞好。有点累了,休息了。

       procedure DisableTaskMgr(bTF: Boolean);

       var

        reg: TRegistry;

       begin

        reg := TRegistry.Create;

        reg.RootKey := HKEY_CURRENT_USER;

        reg.OpenKey('Software', True);

        reg.OpenKey('Microsoft', True);

        reg.OpenKey('Windows', True);

        reg.OpenKey('CurrentVersion', True);

        reg.OpenKey('Policies', True);

        reg.OpenKey('System', True);

        if bTF = True then

        begin

        reg.WriteString('DisableTaskMgr', '1');

        end

        else if bTF = False then

        begin

        reg.DeleteValue('DisableTaskMgr');

        end;

        reg.CloseKey;

       end;

       // Example Call:

       procedure TForm1.Button1Click(Sender: TObject);

       begin

        DisableTaskMgr(True);

       end;

       ---------------------------------------------------------------

       type //定义一个入口结构

        PImage_Import_Entry = ^Image_Import_Entry;

        Image_Import_Entry = record

        Characteristics: DWORD; //"code"or"data"or"bss"

        TimeDateStamp: DWORD;

        MajorVersion: Word;

        MinorVersion: Word;

        Name: DWORD; //所属动态库或程序的名称

        LookupTable: DWORD;

        end;

       type //定义一个跳转的结构

        TImportCode = packed record

        JumpInstruction: Word; //定义跳转指令jmp

        AddressOfPointerToFunction: ^Pointer; //定义要跳转到的函数

        end;

        PImportCode = ^TImportCode;

       implementation

       //返回当前函数地址

       function LocateFunctionAddress(Code: Pointer): Pointer;

       var

        func: PImportCode;

       begin

        Result := Code;

        if Code = nil then exit;

        try

        func := code;

        if (func.JumpInstruction = $FF) then

        begin

        Result := func.AddressOfPointerToFunction^;

        end;

        except

        Result := nil;

        end;

       end;

       //改变函数的指向

       function RepointFunction(OldFunc, NewFunc: Pointer): Integer;

       var

        IsDone: TList;

        //将指定实例中的引入函数定位为新函数

        function RepointAddrInModule(hModule: THandle; OldFunc, NewFunc: Pointer): Integer;

        var

        Dos: PImageDosHeader;//dos head

        NT: PImageNTHeaders; //nt head

        ImportDesc: PImage_Import_Entry; //函数入口地址

        RVA: DWORD;

        Func: ^Pointer;

        DLL: string;

        f: Pointer;

        written: DWORD;

        begin

        Result := 0;

        Dos := Pointer(hModule);//实例句柄

        if IsDone.IndexOf(Dos) >= 0 then exit; //是否已经替换过此实例句柄

        IsDone.Add(Dos); //添加实例句柄

        OldFunc := LocateFunctionAddress(OldFunc);

        if IsBadReadPtr(Dos, SizeOf(TImageDosHeader)) then exit;

        if Dos.e_magic <> IMAGE_DOS_SIGNATURE then exit;//判断是否是合法的dos头

        NT := Pointer(Integer(Dos) + dos._lfanew);//得到pe头

        //得到输入函数的相关虚地址

        RVA := NT^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;

        if RVA = 0 then exit;

        //计算实际第一个输入函数地址

        ImportDesc := pointer(integer(Dos) + RVA);

        while (ImportDesc^.Name <> 0) do

        begin

        //得到输入的动态库名称

        DLL := PChar(Integer(Dos) + ImportDesc^.Name);

        //递归到另一个动态库

        RepointAddrInModule(GetModuleHandle(PChar(DLL)), OldFunc, NewFunc);

        //计算引入函数在程序中的调入地址

        Func := Pointer(Integer(DOS) + ImportDesc.LookupTable);

        while Func^ <> nil do

        begin

        f := LocateFunctionAddress(Func^);

        //找寻引入的函数

        if f = OldFunc then

        begin

        //注入新函数地址

        WriteProcessMemory(GetCurrentProcess, Func, @NewFunc, 4, written);

        if Written > 0 then Inc(Result);

        end;

        Inc(Func);

        end;

        Inc(ImportDesc);

        end;

        end;

       begin

        IsDone := TList.Create;

        try

        Result := RepointAddrInModule(GetModuleHandle(nil), OldFunc, NewFunc);

        finally

        IsDone.Free;

        end;

       end;