除了这种办法,你也可以把QEMU嵌入到你的程序里面,然后在QEMU里跑一个别的处理器的虚拟机,例如mipsel32r2,修改QEMU的CPU解码部分,改一个非标准的指令集编码出来。用在这个虚拟机内的目标代码工具链也得做相应改动(不用动gcc,binutils里面的汇编器as改完就可以了,gcc最终是调用as来完成汇编到机器码的转换)以便生成可以在这个非标准CPU下执行的目标代码。然后用这个工具链编译一份buildroot嵌入式linux的系统固件,跑在你的程序内嵌的虚拟机里,用它联网做验证和下载功能代码,并且在虚拟机中执行功能代码以及和host程序通信,这时候你的功能代码就可以是C语言的,也因为是运行在你程序的QEMU虚拟机中,无法被破解者直接得到,即便抓包得到程序,也因为是非标准CPU的机器码,无法用通用工具进行反编译。
这也是利用虚拟机的复杂度来阻止破解的一种方法。
【 在 munaiyi 的大作中提到: 】
: 1:10的代价对比,确实是这样,不追求完美方案,只追求性价比。
: 我先研究一下这个语言,多谢!
: 另外,c语言能做到动态下载字节码运行不?
: ...................
--
修改:poocp FROM 125.71.196.*
FROM 125.71.196.*