使用mpvue开发小程序教程(一)

前段时间,美团开源了mpvue这个项目,使得我们又多了一种用来开发小程序的框架选项。由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一致的(某些功能由于受限于小程序环境本身的原因而不能使用),这给使用过Vue开发Web应用的前端开发者提供了极低的切换门槛来开发小程序。 如果之前还未曾用过Vue这个框架的话,建议你可以快速浏览一下Vue的官方文档(https://cn.vuejs.org/v2/guide/),或者通过下面的几个视频教程来了解下Vue的基本用法。 Vue基础教程视频:https://www.bilibili.com/video/av25142267https://www.bilibili.com/video/av25143408https://www.bilibili.com/video/av25144006https://www.bilibili.com/video/av25148349https://www.bilibili.com/video/av25148832https://www.bilibili.com/video/av25649895 起手式:必要的开发环境 工欲善其事必先利其器!在开始写代码之前,请确保你已经安装了必要的开发环境和工具,以下是几个必需的和可选的工具: 1)node.js现在,前端工具链基本都依赖Node.js,所以请率先安装它吧。 下载地址:https://nodejs.org/en/download/ 安装完成后,打开你的命令行输入如下命令,验证安装是否成功: node –version//成功的话输出类似:v10.6.0npm –version//成功的话输出类似:6.1.0 然后,我们需要执行以下命令,将npm的下载源切换到国内淘宝的镜像,以提高下载时的速度和成功率: npm set registry https://registry.npm.taobao.org/ 2)vue-clivue-cli是一个vue专用的项目脚手架工具,可以用于方便的创建vue项目骨架代码,包括我们要讲到的mpvue的项目代码。我们可以通过安装node.js后里面包含的npm工具来安装vue-cli,在命令行输入如下命令: npm install vue-cli -g 安装完成后,输入如下命令进行验证: vue// 成功的话会输出如下内容:// Usage: vue <command> [options]//// Options:////    -V, –version  output the version number//    -h, –help     output usage information//// Commands:////    init           generate a new project from a template//    list           list available official templates//    build          prototype a new project//    create         (for v3 warning only)//    help [cmd]     display help for [cmd] 3)微信开发者工具这个工具是开发、调试和模拟运行微信小程序的最核心的工具了,所以必须安装。 下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 4)Visual Studio Code + VeturVisual Studio Code(简称vscode)是现在非常流行的一个轻量级代码编辑器,拥有非常多好用的辅助开发插件,在我的文章中我都会使用这个编辑器来编辑代码。当然,好用的代码编辑器有很多,比如Sublime Text、WebStorm等,同样可以达到我们的开发目的,你也尽管用你自己最喜欢的代码编辑器来写代码就行了。 下载地址:https://code.visualstudio.com 安装完vscode后,在它的插件管理器中,查找Vetur并安装,然后重启一下vscode后,插件即生效: 安装Vetur插件 Vetur是一款可以提供Vue语法高亮、语法检查和代码快捷输入等功能的插件,可以为我们的开发过程提供很多便利。 创建第一个基于mpvue的小程序项目代码 花了点时间装好了必要的开发环境,下面我们就来创建我们的第一个mpvue小程序项目。这里将用到前面已安装的vue-cli: vue init mpvue/mpvue-quickstart firstapp 命令行将一步步的引导我们选择或填写项目的配置信息,如果你还不太明白这些内容的含义,可以先直接全部按回车: ? Project name firstapp? wxmp appid touristappid? Project description A Mpvue project? Author kevinzhang <kevin.zhang@moredist.com> ? Vue build runtime ? Use Vuex? Yes ? Use ESLint to lint your code? Yes ? Pick an ESLint preset Standard ? 小程序测试,敬请关注最新微信开发者工具的“测试报告”功能     vue-cli · Generated "firstapp".    To get started:          cd firstapp      npm install      npm run dev        Documentation can be found at http://mpvue.com 这个过程vue-cli主要是先从远程的代码仓库中下载了一份注册名为mpvue/mpvue-quickstart的模板代码,然后根据开发者在命令行提示过程中输入的信息,生成一份经过配置后的代码。 这份代码暂时还运行不起来,因为它还缺少依赖的库,我们需要执行以下命令进行依赖库的安装: cd firstapp  npm install 经过几分钟的下载安装,依赖库安装到了firstapp目录下,你可以看到该目录下多出了一个node_modules目录。 然后,执行命令让这个代码运行起来,进入开发模式: npm run dev 成功运行后,这个项目代码就进入开发模式,一旦有源代码发生修改,就会触发自动编译。因为mpvue使用的是Vue + HTML Web的开发方式开发小程序,它最终还是需要被转换成小程序的代码才可以在小程序环境运行,所以这里的自动编译的目的就是要把Web代码编译成小程序代码。编译后的代码会在dist目录下: 运行并查看结果 上面的步骤中,我们开启开发模式后,其实并不能看到小程序的执行效果,要真正看小程序的运行界面的话,我们还是要借助微信开发者工具。 […]

微信守护者(自动情感分析、提醒、节日、生日问候)

神器简介 有时候,你很想关心她,但是你太忙了,以至于她一直抱怨,觉得你不够关心她。你暗自下决心,下次一定要准时发消息给她,哪怕是几句话,可是你又忘记了。你觉得自己很委屈&#128557;,但是她又觉得你不负责。 现在,再不用担心了,用python就可以给女友定时发提示消息了,而且不会漏过每一个关键时刻,每天早上起床、中午吃饭、晚上吃饭、晚上睡觉,都会准时发消息给她了,而且还可以让她学习英语单词哦! 在节日来临之时,比如三八妇女节、女神节、情人节、春节、圣诞节,自动发问候语哦,再也不用担心他说你没有仪式感了!&#128512; 在生日来临之时,自动发祝福语哦! 最重要的时候,实时可以知道女友的情感情绪指数哦,再也不用担心女友莫名其妙生气了 神器截图   神器使用教程打开config.ini配置文件,修改以下配置信息: [configuration] # 设置女友的微信名称,记住,不是微信ID也不是微信备注 my_lady_wechat_name = 小强子 # 设置女友生日信息 # 若某一项月份或者日期不想设置,请输入99,不能留空 # 几月,注意补全数字,为两位数,比如6月必须写成06 birthday_month = 03 # 几号,注意补全数字,为两位数,比如6号必须写成08 birthday_day = 18 # 设置早上起床时间,中午吃饭时间,下午吃饭时间,晚上睡觉时间 # 若某一项时间不想设置,请输入99:00,不能留空 say_good_morning = 03:09 say_good_lunch = 03:10 say_good_dinner = 03:11 say_good_dream = 03:12 # 设置晚上睡觉问候语是否在原来的基础上再加上每日学英语精句 # 1表示是,0表示否 flag_learn_english = 1 # 设置所有问候语结束是否加上表情符号 # 1表示是,0表示否 flag_wx_emoj = 1 # 设置节日祝福语 # 情人节祝福语 str_Valentine = 亲爱的,情人节快乐!我想和你一起分享生命中的每一天,直到永远。 # 三八妇女节祝福语 str_Women = 嘿,女神节到了,祝我的女神开心快乐!你每天都是那么好看^_^ # 平安夜祝福语 str_Christmas_Eve = 宝贝,平安夜快乐,你吃苹果了吗?n(*≧▽≦*)n # 圣诞节祝福语 str_Christmas = 小仙女,圣诞节快乐哦!(づ ̄3 ̄)づ╭❤~ # 她生日的时候的祝福语 str_birthday = 亲爱的,生日快乐,我已经给你准备好了礼物哦,明天你就能看到啦!(*@ο@*) 哇~ 在线杀毒验证 VirScan杀毒验证地址:http://r.virscan.org/language/zh-cn/report/2c79d852e82c9b91dcb80b18ed2e61aa 注意部分 1.此神器请小心使用,频繁提醒导致被成为备胎、被分手、被绿均不负责 2.女友不是国家统一分配,也不是软件分配,自己找3.编辑config.ini等配置文件的时候,请使用notepad++编辑,并确保编码格式为UTF-8,而不是UTF-8 BOM,切记! 成品下载地址 Github下载地址:点击这里到Github下载蓝奏云下载地址:https://www.lanzous.com/i3gts3e,密码:d4mm百度网盘下载地址:https://pan.baidu.com/s/1tABUlezS1BFcOzCqNtPfeg,提取码: kb35 源代码 python3.7编写,如果你有兴趣,可以点击这里到github下载源代码

[转载] 无法解密!首个利用WinRAR漏洞传播的未知勒索软件(JNEC)分析

转自安全客 原贴在这里 https://www.anquanke.com/post/id/173612背景2019年3月17日,360威胁情报中心截获了首个利用WinRAR漏洞(CVE-2018-20250[4])传播未知恶意勒索软件的ACE文件[1]。该恶意压缩文件名为vk_4221345.rar,当受害者在本地计算机上通过WinRAR解压该文件后便会触发漏洞,漏洞利用成功后会将内置的勒索软件写入到用户计算机启动项目录中,当用户重启或登录系统都会执行该勒索软件从而导致重要资料被加密。由于该勒索软件执行后并没有保存生成的RSA公私钥,也没有通过其他渠道将公私钥信息发送给攻击者,所以即便受害者向勒索软件作者支付相应的赎金也不可能解密文件。360威胁情报中心提醒用户,如遇到类似的勒索软件攻击,切忌支付赎金。并再次提醒广大用户务必对此高危漏洞做好十足的防护措施。该勒索软件会加密指定文件后缀的文件,并修改文件后缀为.Jnec。故360威胁情报中心将该未知勒索软件命名为JNEC勒索软件并进行分析。JNEC勒索软件在VirusTotal上的检测情况样本分析360威胁情报中心针对该利用WinRAR漏洞进行传播的勒索软件样本进行了分析,相关分析如下。利用受损图片诱导解压 MD5 9ebe2ee958ddd61c93400293d6903ab0 文件名 vk_4221345.rar 该恶意压缩文件包含一张图片,当在WinRAR中双击打开后会看到一张看似破损并不完整的女性图片:并且还会弹出疑似图片解压错误的提示框,而该解压出错提示框疑为攻击者故意为之,压缩包的CRC校验值疑似攻击者故意修改以致打开压缩包中的图片文件后会弹出错误框,以此来诱导用户通过解压后查看图片文件:出于好奇,用户则可能通过解压后查看疑似受损的图片文件,而这样的操作正好会触发WinRAR漏洞,从而释放内置的勒索软件到用户启动目录中:当用户重新启动计算机或登录系统后将执行释放的恶意勒索软件GoogleUpdate.exe。勒索软件分析(GoogleUpdate.exe) 文件名 GoogleUpdate.exe MD5 35f050c384154c4ae23e02b3fce79847 SHA256 d3f74955d9a69678b0fabb4cc0e298fb0909a96ea68865871364578d99cd8025 壳信息 ConfuserEx GoogleUpdate.exe采用ConfuserEx混淆,Exeinfo工具截图如下:去混淆后可以看到,样本运行后将解密并加载名为koi的模块:核心模块分析(Koi.exe) 文件名 Koi.exe MD5 46de4ba92d3030c030494c7b6937f037 SHA256 28a5fa2687f8f5923e9724fd40fe093c7fda05fb61a3ff987b394b1d712d3d12 壳信息 ConfuserEx Koi.exe同样使用ConfuserEx混淆,如下图:去混淆后入口截图如下:勒索功能分析进程运行环境检测 勒索功能部分首先会创建一个任务用于检测虚拟机、沙箱及任务管理器进程。虚拟机检测的相关代码如下:检测沙盒的相关代码如下:检测任务管理器进程相关代码如下:生成加解密密钥入口代码接下来生成RSA-2048密钥对,虽然程序会将公私钥以十六进制的形式保存到变量pubKeyHex和priKeyHex中,但这两个变量在之后的代码中均没有被使用。该样本只是用RSA公钥来加密随机生成的字符串,加密后的数据将被用于生成在文件加密阶段所需的AES密钥:生成及导出RSA密钥函数代码:生成随机字符串函数代码:使用RSA公钥加密、编码随机字符串的函数相关代码如下:最后通过定时器启动加密任务:加密过程分析加密任务创建后首先会调用GetLastInputInfo函数检测是否被调试:然后创建两个线程分别用于搜索磁盘中的文件以及把待加密文件路径写入到日志文件中:加密的文件后缀包括txt、doc、docx、dat、xls、xlsx、ppt、pptx、odt、jpg、jpeg、png、csv、xml、psd和sef:待文件搜索结束后,执行加密文件的任务:函数从日志文件中读取待加密文件列表,并依次加密每个文件:文件加密函数将会计算之前随机字符串经RSA加密、编码处理后的SHA256值,并用做AES加密文件的密钥:最后通过加盐AES实现文件加密:待文件加密完成后将弹出对话框展示勒索信息:最后在桌面生成勒索信息文件:勒索信息中包含随机生成的12个字符的Gmail邮箱:以下是勒索软件的README信息,大致意思是让受害者向比特币钱包地址1JK1gnn4KEQRf8n7pHZiNvmV8WXTfq7kVa支付0.05 BTC,并注册JSOqxz4E1cYL@gmail.com邮箱,随后将在邮箱中收到解密密钥:无法解密成因分析由于勒索软件自身设计的原因,亦或者勒索软件作者根本未想过要替受害者解密文件,即便受害者向勒索软件作者支付相应的赎金也无法从攻击者那里拿到相应的解密密钥,相关原理如下: 勒索软件作者并没有保存生成的RSA公私钥,更没有回传公私钥信息。 邮箱是随机生成的,但是并没有通过网络发送给勒索软件作者。因此即使受害者注册了对应的邮箱,勒索软件作者也不知道该邮箱的存在,更不会向它发送解密密钥。 总结正如我们的预测,利用WinRAR漏洞(CVE-2018-20250)传播恶意程序的攻击行为正处在爆发阶段,360威胁情报中心除了观察到多个利用此漏洞进行的APT攻击活动外,还首次截获了利用该漏洞传播恶意勒索软件的病毒,攻击者企图制造更广泛的危害。由于从设计上看被加密的文件事实无法再被解密,所以目前无法排除这是一起勒索掩盖下的定向破坏攻击活动。360威胁情报中心再次提醒各用户及时做好该漏洞防护措施。(见“缓解措施”一节) 缓解措施 软件厂商已经发布了最新的WinRAR版本,360威胁情报中心建议用户及时更新升级WinRAR(5.70 beta 1)到最新版本, 下载地址如下: 激活Key下载地址,下载解压覆盖到rar安装目录即可激活 C:\Program Files\WinRAR  rarreg.rar 32 位:http://win-rar.com/fileadmin/winrar-versions/wrar57b1.exe    64 位:http://win-rar.com/fileadmin/winrar-versions/winrar-x64-57b1.exe 如暂时无法安装补丁,可以直接删除漏洞的DLL(UNACEV2.DLL),这样不影响一般的使用,但是遇到ACE的文件会报错。 目前,基于360威胁情报中心的威胁情报数据的全线产品,包括360威胁情报平台(TIP)、天擎、天眼高级威胁检测系统、360 NGSOC等,都已经支持对此类攻击的精确检测。 IOCs 恶意ACE文件MD5 9ebe2ee958ddd61c93400293d6903ab0 JNEC勒索软件MD5 35f050c384154c4ae23e02b3fce79847 攻击者比特币钱包地址 1JK1gnn4KEQRf8n7pHZiNvmV8WXTfq7kVa 参考链接 https://twitter.com/360TIC/status/1099987939818299392 https://mp.weixin.qq.com/s/Hz-uN9VEejYN6IHFBtUSRQ(首个完整利用WinRAR漏洞传播的恶意样本分析) https://mp.weixin.qq.com/s/hAoee3Z90FyxSdomHfqZqA(警惕!WinRAR漏洞利用升级:社工、加密、无文件后门) https://research.checkpoint.com/extracting-code-execution-from-winrar/ https://ti.360.net/advisory/articles/360ti-sv-2019-0009-winrar-rce/

Android逆向基础笔记—Dalvik字节码小记_const/4 v2, 0x1

const/4 v1, 0x1 这里大家应该知道 v1=1。但是真真正正想过为什么?也许很多人都知道,这里是写给不知道的。 首先4代表4字节,那么就是4位的。所以呢 v1=0*4+1=1 const/4 v0,0x1     0*4 + 1 const/16 v2, 0x10  这里的话,16字节,那么16位对吧。所以v2 = 1*16+0 = 16 const/16 v3, 0x28  16字节,16位。v3 = 2*16+8 = 40; .local 4                   //本地4个寄存器,也就是下面的v0,v1,v2,v3 const/4 v2, 0x1            //4字节常量   v2=1 const/16 v1, 0x10          //16字节常量  v1=16 :local v1, "length":I      //int length=v1 if-nez v1,:cond_1        //如果v1不等于0,这跳转至cond_1 :cond_0                    //cond_0标签 :goto_0                    //goto_0标签 return v2                  //返回v2的值 :cond_1                    //开始执行cond_1标签代码 const/4 v0,0x0             //4字节常量  v0=0 :local v0, "i":I           //int i=v0 :goto_1                    //开始执行goto_1标签代码 if-lt v0, v1, :cond_2      //如果v0小于v1,则跳转至cond_2 const/16 v3,0x28           //如果v0大于等于v1,则执行下面语句: 16字节常量v3=40 if-le v1,v3, :cond_0       //如果v1小于等于v3,则跳转至cond_0,即返回v2的值 const/4 v2, 0x0            //如果v1大于v3,则4字节常量v2=0 goto:goto_0                //跳转至goto_0,即返回v2的值 :cond_2                    //cond_2标签 xor-int/lit8 v1, v1, 0x3b  //将第二个v1寄存器中的值与0x3b(59)进行异或运算,得到的值赋值给第一个v1寄存器中 add-int/lit8 v0, v0, 0x1   //将第二个v0寄存器中的值加上0x1(1),所得的值放入第一个v0寄存器中 goto:goto_1                //跳转值goto_1标签 翻译成java代码就是  int v2 = 1;  int v1 = 16;  if (v1 != 0){     for (int v0 = 0; v0 < v1;){           v1 = v1 ^ 59;           v0++;      }      if (v1 > 40){          v2 = 0;      }   }  return v2;