创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
勾引 英文 [原创]LLVM字符串加密学习条记-软件逆向-看雪-安全社区|安全招聘|kanxue.com - 性爱大师第一季

  • 首页
  • 金发美女
  • 金发大奶
  • 大奶人体艺术
  • 大奶女
  • 大奶美女
  • 泷川雅美视频
  • 大奶女

    你的位置:性爱大师第一季 > 大奶女 >

    勾引 英文 [原创]LLVM字符串加密学习条记-软件逆向-看雪-安全社区|安全招聘|kanxue.com

    发布日期:2024-11-04 06:17    点击次数:91

    之前看chenx6大佬的博客学习了一下编写基础的LLVM Pass,然而阿谁有很较着的问题是,作家为了处理Function里面重叠援用的屡次解密的问题,特判了援用次数,要是存在多处对global string的援用是无法进行污染的。然而实质的编程中很难不会援用多处字符串,是以阿谁只可污染简便代码。我背面凭据探讨区的说法对此优化了一下,改成Function的EntryBasicBlock处解密勾引 英文,然而过不了llvm-dis,嗅觉是在alloc栈变量的期间出了问题,暂时不知谈若何责罚,背面要是有才气的话再再行写一遍吧。

    之后学习了一下pluto-obfuscator名目,里面有一份GlobalEncryption.cpp,借此契机学习一下,趁便写一份New PassManager版块的。

    pluto-obfuscator的全局变量加密对全局整数和数组变量进行了处理,选择的步地是编译期加密,运行期解密,便是在IR阶段对全局变量加密,然后对每个全局变量调用解密函数并添加到.ctors中,让时局在运行期进行全局构造的期间解密。

    看雪有一个帖子转头几种加密步地转头得相比好,搬运一下

    最初取得Module的LLVMContext,取得通盘的全局变量,添加到GVs中

    然后筛选出需要加密的全局变量,ObfuTimes是污染次数,默许为1

    然后鉴别处理数组和整数类型的全局变量,在这里径直进行加密,然后调用insertArrayDecryption和insertIntDecryption将解密函数添加到全局构造函数表中

    因为在解密的步地上其实很像勾引 英文,这里只纪录相比复杂的数组解密,这里用IRBuilder构造了一个for轮回来已矣解密,整数全局变量独一和密钥异或就行了,旨趣是相似的

    最初构造一个函数,复返值是void

    然后构造四个BasicBlock,用于已矣for轮回的几个阶段

    丝袜玉足

    最初取得func的EntryBasicBlock,然后开动化轮回变量

    forCond已矣i < length的部分,要是i < length配置则跳转到轮回体,要是不配置则跳出轮回

    轮回体内便是解密的经过了,其实便是和密钥的每一位进行异或,终末跳转到i++

    forInc已矣的便是i++了,这里相比简便,终末跳转到forCond进行条款判断,这么就已矣了轮回

    forEnd便是复返ret,终末再将函数写入.ctors中,已矣运行期全局构造

    以下是我改写成New PassManager的GlobalsEncryption.cpp,加密部分没作念修改,通盘代码在libObfuscator/tree/pluto-enc

    写个代码测试一下

    污染前后的IR对比

    固然这对动调来说是没啥用的

    对静态分析来说,这个强度的加密还是有点弱,加密函数很容易就会被看出来,还不错加点另外的平坦化之类的污染,对分析加密函数也栽培难度

    [培训]内核驱动高等班勾引 英文,冲击BAT一流互联网大厂责任,每周日13:00-18:00直播讲课



    创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
    JzEngine Create File False