问题标签 [cracking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - 我的网站被黑了。我该怎么办?
我爸爸今天打电话给我,说访问他的网站的人正在尝试将 168 种病毒下载到他们的计算机上。他根本不是技术人员,而是用所见即所得的编辑器构建了整个东西。
我打开了他的网站并查看了源代码,在源代码底部的结束 HTML 标记之前有一行 Javascript 包含。他们包括这个文件(以及许多其他文件):http ://www.98hs.ru/js.js <--在你去那个 URL 之前关闭 JAVASCRIPT。
所以我暂时把它注释掉了。事实证明,他的 FTP 密码是一个普通的字典单词,长度为六个字母,所以我们认为这就是它被黑客入侵的原因。我们已将他的密码更改为一个 8 位以上的非单词字符串(他不会输入密码,因为他是个打猎打字员)。
我在 98hs.ru 上做了一个 whois,发现它是由智利的服务器托管的。实际上也有一个与之相关的电子邮件地址,但我严重怀疑这个人是罪魁祸首。可能只是其他一些被黑客入侵的网站......
我现在不知道该怎么做,因为我以前从未处理过这种事情。有人有什么建议吗?
他通过 webhost4life.com 使用普通的 jane 不安全 ftp。我什至看不到在他们的网站上进行sftp 的方法。我在想他的用户名和密码被截获了?
因此,为了使这与社区更相关,您应该采取哪些步骤/应该遵循哪些最佳实践来保护您的网站免受黑客攻击?
为了记录,这是“神奇地”添加到他的文件中的代码行(并且不在他计算机上的文件中——我将其注释掉只是为了绝对确保它不会做任何事情在这个页面上,虽然我确信杰夫会提防这一点):
reverse-engineering - 串行发生器/裂缝是如何开发的?
我的意思是,我一直想知道有人到底是如何开发算法来打破/欺骗许多共享软件程序中合法使用的限制。
只是为了好奇。
obfuscation - 小型供应商的软件保护
这是我们都必须在某个时候考虑的问题。
经过多年和许多方法之后,我倾向于总体上同意这样的说法:“对于任何数百人使用的受保护软件,您都可以找到破解版。到目前为止,每个保护方案都可以被篡改。” 您的雇主是否强制使用反盗版软件?
此外,每次我发布有关此主题的信息时,都会有人提醒我;“首先,无论你采用什么样的保护措施,一个真正敬业的饼干最终都会通过所有的保护屏障。” 对于单个开发人员来说,什么是最物有所值的 c# 代码保护
因此,尽管有这两个广泛正确的免责声明,让我们谈谈“保护”!
我仍然觉得对于不太可能吸引熟练破解者的时间和注意力的小型应用程序,保护是一项值得的练习。
很明显,无论您做什么,如果破解者可以通过修补应用程序来切换 IF 语句 (jmp) 的结果,那么世界上所有的密码和加密狗都无济于事。
所以我的方法是使用以下产品通过虚拟化混淆代码: http ://www.oreans.com/codevirtualizer.php 我对这个产品非常满意。据我所知,它从未被击败过。我什至可以用 PEcompact 压缩可执行文件还有其他人有这方面的经验吗?
除了 EXEcryptor 的问题之外什么都没有 http://www.strongbit.com/news.asp 即使该网站使用起来也很头疼。编译的应用程序在执行任何 WMI 调用时都会崩溃。
这种方法允许您使用混淆来包围较小的代码部分,从而保护安全检查等。
我使用在线授权方法,因为应用程序需要定期从服务器获取数据,因此用户长时间离线使用它是没有意义的。根据定义,该应用程序在这一点上毫无价值,即使它已被破解。
所以一个简单的加密握手就足够了。我只是偶尔在混淆保护中检查它。如果用户在另一台机器上安装应用程序,则在启动时会上传新 ID,服务器会禁用旧 ID 并返回新授权。
我还使用已编译应用程序的哈希值,并在启动时检查它是否有任何更改,然后从应用程序内将应用程序作为文件(带有读取锁)打开,以防止任何人在启动后更改它。
由于所有静态字符串在 .exe 文件中都清晰可见,因此我尝试使用通用的错误消息等。您不会在任何地方找到字符串“授权失败”。
为了防止内存转储,我使用了一种简单的文本混淆技术(例如 XOR 每个字符)这使得内存中的纯文本数据更难与变量等区分开来。
当然,对于任何真正敏感的数据都有 AES。我喜欢文本的计数器模式,因为这不会导致重复序列显示底层数据(如一系列空白)。
但是使用所有这些技术,如果可以从内存中转储密钥或初始化向量,或者绕过 IF 语句,那么一切都被浪费了。
我倾向于使用 switch 语句而不是条件语句。然后我创建了第二个函数,它基本上是一个死胡同,而不是实际执行所需任务的函数。
另一个想法是编写添加了变量的指针。变量是授权的结果(通常为零)。这将不可避免地在某个时候导致 GPF。我只在一些较低级别的授权失败后才将其用作最后的手段,否则真正的用户可能会遇到它。然后,您的软件的声誉就会降低。
你使用什么技术?
(这不是一个讨论实现某事的优点的线程。它是为那些决定做某事的人设计的)
reverse-engineering - 您是否曾经使用过代码虚拟器或 vmprotect 来防止逆向工程?
我知道没有办法完全保护我们的代码。我也知道,如果用户想要破解我们的应用程序,那么他或她就不会购买我们的应用程序。我也知道最好改进我们的应用程序......而不是害怕反破解技术。我也知道没有商业工具可以保护我们的应用程序……我也知道……
行。足够。我什么都听到了。我真的认为增加一点保护不会受到伤害。
所以....你曾经使用过 oreans 或 vmprotect 的代码虚拟化器吗?我听说它们有时会被某些防病毒软件检测为病毒。
在购买之前我应该知道的任何经验。我知道它创建了一些虚拟机并混淆了一些代码,以便更难发现我们注册程序的弱点。
有什么我应该知道的警告吗?
谢谢。任何意见,将不胜感激。
捷豹
c# - 破解你自己的应用程序
我是一名非常注重安全性的 Web 开发人员,并尝试使我的 Web 应用程序尽可能安全。
我是如何开始用 C# 编写自己的 Windows 应用程序的,而在测试 C# 应用程序的安全性时,我真的只是一个新手。
只是想知道是否有人有任何关于如何破解自己的 Windows 应用程序和编写安全代码的好的教程/自述文件。
cracking - 黑客/破解道义论
假设您最近在几个主要在您所在国家/地区激活并在其市场中非常强大的网站中发现了一些重大漏洞。我说的漏洞和让我以超级管理员权限浏览管理界面一样糟糕。
你现在会怎么做?我在想类似的东西:
- 向公司报告问题。
- 公开宣布这些应用程序中存在安全漏洞,但未披露实际漏洞。
- 给公司时间来解决它的问题。(多少?)
- 在问题修复后,或修复宽限期已过(以先到者为准),充分披露漏洞。
你们有什么感想?您是否有一些材料可以阅读或分享经验?
.net - 在调试器下运行时更改程序流程
有什么方法可以检测到调试器是否在内存中运行?
这是表单加载伪代码。
编辑:原标题是“Detecting an in memory debugger”
python - 如何处理脚本语言中的用户认证和错误修改?
我正在使用 Python/wxPython 构建一个集中式桌面应用程序。其中一项要求是用户身份验证,我正在尝试使用 LDAP 来实现它(尽管这不是强制性的)。
该系统的用户将是制定预算的机械和电气工程师,而最大的问题将是工业间谍活动。这是一个常见的问题,即泄漏通常以非正式的方式从底部发生,这可能会造成问题。该系统的设置方式是,每个用户都可以访问所有并且只能访问其需要的信息,因此除了最上层的人之外,没有人拥有整个项目的货币信息。
问题是,对于我能想到的实现身份验证系统的每一种方式,Python 的开放性让我想到了至少一种绕过/从系统获取敏感信息的方式,因为“编译”py2exe
是我能得到的最接近混淆的方法Windows 上的代码。
我并不是真的想隐藏代码,而是让身份验证例程本身安全,以这样一种方式进行,即访问代码并不意味着访问应用程序的能力。我想添加的一件事是对访问例程进行某种代码签名,因此用户可以确定他没有运行经过修改的客户端应用程序。
我想避免这种情况的一种方法是制作一个C
用于身份验证的模块,但我宁愿不必这样做。
当然,这个问题现在正在发生变化,不仅仅是“谁能指出我正确的方向,如何构建一个在 Python 上运行的安全身份验证系统?这样的东西已经存在了吗?”,而是“你如何强化脚本(Python) 反对错误修改?”
python - 解密 MD5 哈希
可能重复:
是否可以解密 md5 哈希?
给定密钥,有什么方法可以解密加密的MD5字符串?
objective-c - 成为饼干的噩梦!
我正在尝试在 Mac 上使用 Objective-C 使代码难以破解。
我必须做的一件事是检查应用程序是否被破解。
我是 Objective-C 和 Xcode 的新手,无论我想象如何测试我的应用程序,我总是以可以轻松修补的基本测试结束。
例如:假设我要测试二进制文件的某个部分中是否存在给定值。该操作将类似于:
“这个值 = x 吗?” 如果否,则已破解。
这很容易破解。黑客可以轻松地修补测试并使其始终为真。
我试图想象一些可以测试某些东西的东西,而不是看起来可以很容易修补的测试。
我知道我无法 100% 阻止盗版,但至少我试图让事情变得更加困难,以阻止大部分的破解者。
任何关于这样的事情的想法可以在没有的情况下完成并且对于查看二进制文件的人来说变得困难?
谢谢你的帮助。