首页
社区
课程
招聘
[原创]以往讲的都是如何去除花指令,这次用最简单的例子如何在代码中使用花指令
发表于: 2024-5-13 09:49 3544

[原创]以往讲的都是如何去除花指令,这次用最简单的例子如何在代码中使用花指令

2024-5-13 09:49
3544

我是一名从事反欺诈&风控&设备指纹相关的工作,最近对花指令进行了学习与思考。

什么是花指令

花指令是一些无用的指令代码,它插入到正的源码中,不会对源码产生影响,但是对反编译工具会产生影响,如ida,一块花指令就可以让ida反编译失败,而正常的商用会添加上成千上百次的花指令,对逆向人员是个极大的挑战
我们常常想逆向看看竞争对手的一些技术手段,而花指令会成为第一个坎,很多人第一关都过不去,后面的更不用看了。
这篇文章是让一些技术小白学会使用花指令来保护自己的so代码。文章附件会加上项目源码以供参考。
我看过之前前辈写的花指令相关的文章,很多都比较复杂高端,让入门小白望而却之,啥都别说,先看效果截图。

没添加花指令的效果

1
2
3
4
5
6
7
8
9
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_huazhilingout_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++1";
    std::string hello1 = "Hello from C++2";
    std::string hello2 = "Hello from C++3";
    return env->NewStringUTF(hello.c_str());
}

ida中的展示

添加了花指令的效果


原理篇

网上看过很多花指令的案例我就不一一列举,而最主流,最难搞的花指令就是这种br x8跳转的花指令,所以今天重点介绍这种
static attribute((always_inline)) void Junk_code_012() {
#ifdef aarch64
int arr[]={0x1,0x14,0x4,0x03,0x1,0x032,0x18};
register long x7 asm("x7") = (long) arr;
asm volatile(
"mov x8,#0x1\n"
"mov x10,#0x2\n"
"ldr w10,[x7,#24]\n"
// 这里的点是关键,代表当前pc
"adr x9, .\n"
"mov x7, #03\n"
"add x9, x9, x10\n"
"mul x8, x9, x8\n"
"adr x9,.\n"
"br x8\n":"=r"(x7):"0"(x7):"memory", "cc"
);
#endif
}
这里的花指令代码,采用c跟汇编融合变成,目的是想传入个数组给汇编代码,这就是目前各大厂采用的查表式的花指令,即x8的br跳转,需要从内存表中动态查询要跳转到哪个位置。
我们在需要花指令混淆的方法源码中,加上Junk_code_012()的花指令代码调用即可。
那问题来了,对于成败上千的花指令添加要怎么做呢? 无非是写个脚本,在编译前源码阶段用脚本对每行源码插入花指令方法的调用。
上面的花指令方法可以有很多变种,你可以硬编码写多个花指令方法出来,动态的选择要采用哪个进行插入,这样可以增加逆向难度。

具体操作

1 要添加花指令首先项目中的cmakelist要加上汇编的支持enable_language(ASM)
2 需要花指令混淆的代码中添加Junk_code_012()方法的调用,可以添加多行


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 11
支持
分享
最新回复 (4)
雪    币: 41
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
下一篇讲解如何使用ida或unidbg去除花指令,顺便送上源码,点赞加收藏
2024-5-13 09:51
0
雪    币: 29
活跃值: (5647)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
实际上大家通常是通过llvm pass来实现的
2024-5-13 15:22
0
雪    币: 7170
活跃值: (3272)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不就是ollvm中的IndirectBranch实现
2024-5-13 18:33
0
雪    币: 2334
活跃值: (10385)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
期待下篇
2024-5-14 10:08
0
游客
登录 | 注册 方可回帖
返回
//