社区
C++ 语言
帖子详情
谁了解代码混淆器?
MagiSu
2012-09-27 10:25:57
最近上头的意思是要我和一个印度阿三合作,鉴于此人有骗功劳前科,所以想项目提交的代码只保留接口,内部实现用混淆器处理掉,我个人保留清晰的源码。不知谁对这个方向有所了解?
...全文
276
5
打赏
收藏
谁了解代码混淆器?
最近上头的意思是要我和一个印度阿三合作,鉴于此人有骗功劳前科,所以想项目提交的代码只保留接口,内部实现用混淆器处理掉,我个人保留清晰的源码。不知谁对这个方向有所了解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2012-09-28
打赏
举报
回复
奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!
大熊猫侯佩
2012-09-28
打赏
举报
回复
直接加密,就是加壳即可。
mLee79
2012-09-27
打赏
举报
回复
我曾经打算写一个, 不过没有完工就没写了, 包含以下的部分:
1) 自身敏感依赖的加密算法内核, 包含对称加密, 随机数发生器, 散列算法, RSA , 函数的输出都
是自身二进制代码的函数, 以保证内核部分不能被修改.
2) 一个用DebugAPI(如WaitForDebugEvent, ptrace 等)方式与主程序通讯的受保护的进程( 本来做成
内核模块更好, 只是太容易蓝屏, 还是算了 ) 通讯( 通过 SIGTRAP , int 3 , DRX寄存器) , 核
心部分的代码都会注入到这个进程中运行以防止被跟踪.
3) 一个预处理器, 会对程序中一些重要的部分做混淆和加密.
3a) 对程序中出现的常量做保护
比如 uint32 magic = XSA_SECRET_CONST( 1001 );
被预处理后将会成为类似的代码:
uint32 magic = (XSA_hash( 0x12345678 ) + 0x56789abc);
从而真正的常数不会在源代码以及可执行文件中出现.
3b) 加密并在保护的进程中运行重要的核心函数, 比如, 一个重要的函数:
XSA_SECRET_FUNCTION_BEGIN( foobar )
static int func( .... )
{
}
int foobar( void* context , void* param )
{
.....
return func( .... );
}
XSA_SECRET_FUNCTION_END()
将被预处理器处理为:
int foobar( void* context , void* param )
{
// 现在的 shellCode 是明文, 实际使用中应该是用内置的加密算法加密过后的数据
static const char* shellCode =
"\x55\x57\x56\x53\x83\xec\x18\x89\x54\x24\x08\x8b\x44\x24\x08\x83"
"\xc2\x14\x89\x54\x24\x0c\x8b\x08\x85\xc9\x0f\x85\x10\x01\x00\x00"
"\x8b\x70\x14\x89\xc2\xbf\x20\x37\xef\xc6\x8b\x44\x24\x08\x83\xc2"
"\x18\x89\x54\x24\x14\x8b\x50\x18\x8b\x40\x04\x89\x04\x24\x8b\x44"
"\x24\x08\x8b\x40\x08\x89\x44\x24\x04\x8b\x44\x24\x08\x8b\x48\x0c"
"\x8b\x58\x10\x90\x8d\x74\x26\x00\x89\xf0\x89\xf5\xc1\xe0\x04\xc1"
"\xed\x05\x01\xc8\x01\xdd\x31\xe8\x8d\x2c\x37\x31\xe8\x29\xc2\x89"
"\xd0\x89\xd5\xc1\xe0\x04\xc1\xed\x05\x03\x04\x24\x03\x6c\x24\x04"
"\x31\xe8\x8d\x2c\x3a\x31\xe8\x29\xc6\x81\xc7\x47\x86\xc8\x61\x75"
"\xc7\x8b\x44\x24\x08\xbf\x20\x37\xef\xc6\x89\x50\x18\x8b\x54\x24"
"\x0c\x89\x70\x14\x8b\x44\x24\x0c\x83\xc2\x08\x89\x54\x24\x10\x8b"
"\x70\x08\x8b\x50\x0c\x8d\x76\x00\x89\xf0\x89\xf5\xc1\xe0\x04\xc1"
"\xed\x05\x01\xc8\x01\xdd\x31\xe8\x8d\x2c\x37\x31\xe8\x29\xc2\x89"
"\xd0\x89\xd5\xc1\xe0\x04\xc1\xed\x05\x03\x04\x24\x03\x6c\x24\x04"
"\x31\xe8\x8d\x2c\x3a\x31\xe8\x29\xc6\x81\xc7\x47\x86\xc8\x61\x75"
"\xc7\x8b\x44\x24\x0c\x89\x50\x0c\x8b\x54\x24\x08\x89\x70\x08\x8b"
"\x42\x14\x8b\x54\x24\x10\x29\x02\x8b\x54\x24\x08\x8b\x42\x18\x8b"
"\x54\x24\x0c\x29\x42\x0c\x8b\x44\x24\x14\x81\x2a\xb3\x46\x33\x76"
"\x81\x28\xb4\x46\x33\x76\x83\xc4\x18\x31\xc0\x5b\x5e\x5f\x5d\xc3"
"\x81\x02\xb3\x46\x33\x76\x31\xff\x8b\x54\x24\x08\x81\x40\x18\xb4"
"\x46\x33\x76\x83\xc0\x1c\x89\x44\x24\x0c\x8b\x42\x14\x8b\x54\x24"
"\x0c\x01\x02\x8b\x54\x24\x08\x8b\x42\x18\x01\x42\x20\x89\xd0\x8b"
"\x40\x04\x8b\x72\x14\x8b\x52\x18\x89\x04\x24\x8b\x44\x24\x08\x8b"
"\x40\x08\x89\x44\x24\x04\x8b\x44\x24\x08\x8b\x48\x0c\x8b\x58\x10"
"\x89\xd5\x81\xef\x47\x86\xc8\x61\xc1\xe5\x04\x03\x2c\x24\x8d\x04"
"\x17\x31\xe8\x89\xd5\xc1\xed\x05\x03\x6c\x24\x04\x31\xe8\x01\xc6"
"\x89\xf0\x89\xf5\xc1\xe0\x04\xc1\xed\x05\x01\xc8\x01\xdd\x31\xe8"
"\x8d\x2c\x3e\x31\xe8\x01\xc2\x81\xff\x20\x37\xef\xc6\x75\xc1\x8b"
"\x44\x24\x08\x31\xff\x89\x70\x14\x8b\x70\x1c\x89\x50\x18\x8b\x44"
"\x24\x0c\x8b\x50\x04\x8d\x76\x00\x89\xd5\x81\xef\x47\x86\xc8\x61"
"\xc1\xe5\x04\x03\x2c\x24\x8d\x04\x17\x31\xe8\x89\xd5\xc1\xed\x05"
"\x03\x6c\x24\x04\x31\xe8\x01\xc6\x89\xf0\x89\xf5\xc1\xe0\x04\xc1"
"\xed\x05\x01\xc8\x01\xdd\x31\xe8\x8d\x2c\x3e\x31\xe8\x01\xc2\x81"
"\xff\x20\x37\xef\xc6\x75\xc1\x8b\x44\x24\x08\x89\x70\x1c\x8b\x44"
"\x24\x0c\x89\x50\x04\x83\xc4\x18\x31\xc0\x5b\x5e\x5f\x5d\xc3\x44";
return vPLD_download_and_run( shellCode , context , param );
}
MagiSu
2012-09-27
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
要写就直接写混乱代码
这个本事大家都有吧。
[/Quote]
这个本事是有
可是以后要修改我就没本事了。
taodm
2012-09-27
打赏
举报
回复
要写就直接写混乱代码
这个本事大家都有吧。
Android Gradle解惑与实战
把基础的Gradle一起插件(Plugin)、扩展(Extension)
了解
完后,在实战部分,详细讲述了Android Gradle部分,包括构建类型、签名配置、
代码
混淆
、测试、多项目构建、多渠道构建、NDK支持等等内容,让学生再也没有...
什么是
代码
混淆
?andriod和android-studio工程如何启用
代码
混淆
功能?
在网上搜“
代码
混淆
”关键词,可以看到n多教程。包括本篇博客,大部分重要内容也是从网上各位大神的博客里面看到然后摘取和总结出来的。...进行
代码
混淆
的程序被称为
代码
混淆
器
(
混淆
工具)。进行
代码
混淆
的意
springboot
代码
混淆
及反
混淆
代码
工具
如果不
了解
代码
是如何
混淆
的,我们可能无法成功对
代码
进行反
混淆
,尤其是使用自定义
混淆
器
对其进行
混淆
时。
混淆
是一种技术,用于使脚本更难以被人类阅读,但从技术角度来看,它可以发挥相同的功能,尽管性能可能会较...
安卓
代码
混淆
指南
混淆
代码
能有效防止项目被反编译,同时还可以适当减少apk的大小,在实际开发过程中尤为重要,经过长时间的摸索,对
代码
混淆
有了一定的
了解
,下面写下个人心得: 1.
代码
混淆
的重要文件:proguard-rules.pro,如果你...
iOS安全攻防(二十三):Objective-C
代码
混淆
iOS安全攻防(二十三):Objective-C
代码
混淆
class-dump可以很方便的导出程序头文件,不仅让攻击者
了解
了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行留下笑柄。所以,我们迫切的希望
混淆
自己的
代码
...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章