微信开发工具启动无二维码_windows微信开发者工具启动应用没有二维码扫描登录 - CSDN
  • 今天遇到一个问题,开发微信公众号和小程序的微信web开发者工具,突然打不开了,无论怎么点击,怎么重启电脑都打不开,昨天都好好的,今天上班就出问题了。 刚刚解决,现在把解决办法附上,希望对大家有帮助: ...

    最近,一直很火的微信小程序,我们公司也开发一个用来做产品推广;

    今天遇到一个问题,开发微信公众号和小程序的微信web开发者工具,突然打不开了,无论怎么点击,怎么重启电脑都打不开,昨天都好好的,今天上班就出问题了。


    刚刚解决,现在把解决办法附上,希望对大家有帮助:

    目前最好的解决办法,就是重装 “微信web开发者工具” ,而且,要把安装目录修改为非上次安装的目录(安装在一个新目录下,不受原有文件影响,小编试过安装在原有的目录下,安装过程中会报与原有文件冲突,而且安装好后也无法启动)。


    感谢大家的观看捧场,希望对大家有用。


    下方二维码是本人用来测试微信支付功能的二维码,感谢大家的支持!



    展开全文
  • 文章目录文章参考问题描述开发工具模拟扫描二维码进入小程序的解决办法 文章参考 微信小程序未发布 二维码图片如何扫描测试 问题描述 有个要识别二维码页面跳转的功能,想着怎么样模拟识别二维码呢,用开发工具...

    文章参考

    1. 微信小程序未发布 二维码图片如何扫描测试

    问题描述

    有个要识别二维码页面跳转的功能,想着怎么样模拟识别二维码呢,用开发工具扫描二维码应该不可能,如果是用手机扫,那么,怎么让手机跳转到我的开发代码中,而不是我发布的代码小程序中呢?

    解决步骤

    1.开发工具模拟扫描二维码进入小程序

    通过二维码编译 启动小程序,然后运行的代码就是当前开发的代码

    在这里插入图片描述

    2. 在进入小程序的界面

    传递的参数,特殊字符需要通过decodeURIComponent函数转码

    // 获取扫描二维码传递过来的参数
    onLoad(query) {
    	console.log(query);
    	// 传递的参数需要转码
    	const scene = decodeURIComponent(query.scene);
    	console.log(scene);
    	this.qrcodeParam = scene;
    },
    
    展开全文
  • 因为业务的需求,需要做出携带参数的 小程序指定页面的 二维码,通过微信扫一扫直接进入页面或者启动小程序的某项功能。 因为仅能生成已发布的 小程序二维码,所以才等到今天发布后,生成二维码并且测试完相关功能...

    历经了一个月的时间,从开发到审核,我们的微信小程序终于在今天上线了,喜大普奔!

    因为业务的需求,需要做出携带参数的 小程序指定页面的 二维码,通过微信扫一扫直接进入页面或者启动小程序的某项功能。
    因为仅能生成已发布的 小程序二维码,所以才等到今天发布后,生成二维码并且测试完相关功能,才梳理出此贴。

    准备工作

    1. 微信公众平台接口调试工具
    2. 小程序的唯一标识(appid)
    3. 小程序的密钥(secret)
    4. 火狐浏览器测试接口插件(RESTClient)如下图

      进入火狐浏览器——右上角——展开面板中的附加组件——在右上方的搜索框中输入 rest——找到RESTClient——安装——重启浏览器后在右上方点击图标即可进入
      如何找到该插件?

    详细步骤


    1.打开微信公众平台接口调试工具,在参数列表中输入小程序的appid和secret,点击检查问题,如果appid和secret正确,则可以返回正确的access_token结果(图中下方的红框)

    获取access_token


    2.打开之前安装好的RESTClient插件,
    请求方式选择POST
    URL一栏输入https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=(上一条中返回的access_token值)
    Body中输入的格式为{“path”: “pages/index?query=1”, “width”: 430}的json字符串
    其中path表示此二维码需要展示的小程序的页面,该路径需要在小程序的 app.jsonpages 中定义
    路径后面可以设置参数,参数间用&符号隔开,path值的最大长度 128 字节
    width表示二维码的宽度
    确认信息无误后,点击右上方SEND按钮请求接口


    3.出现警告框点击Yes,如果下方出现出现一堆乱码,那恭喜你,基本上已经成功了(如图)

    请求数据


    4.点击最后一个响应结果的选项卡Response Body(Preview),即可召唤神龙

    完成

    展开全文
  • 前段时间有个朋友找我,让我拿下微信登录时侯的二维码数据,好久没有分析PC微信了,先去了解了下微信二维码登录的原理,找到了一篇WEB端的微信二维码登录的原理: 1、每次用户打开PC端登陆请求,系统返回一个唯一的...

    1 前言&准备工作

    前段时间有个朋友找我,让我拿下微信登录时侯的二维码数据,好久没有分析PC微信了,先去了解了下微信二维码登录的原理,找到了一篇WEB端的微信二维码登录的原理:

    1、每次用户打开PC端登陆请求,系统返回一个唯一的uid,并将uid的信息绘制成二维码返回给用户。这里的uid一定是唯一的,否则就会造成你登陆了其他用户的账号或者其他用户登陆你的账号。
    
    
    2、当用户使用登陆后的微信扫描该二维码的时候,会将这个uid和手机上的微信账号及密码产生的token进行绑定,并上传到服务器。
    
    3、WEB通过JS不断的向后端发起请求,查询有没有关于uid的登陆记录(uid和token是否存在于服务器上)
    

    虽然该文章讲述以web端角度分析,但是感觉微信的PC端大致流程也是如此,下面我们就准备开干,分析目标:

    PC微信核心模块:wechatwin.dll (2.6.7.57版本)

    相关工具:

    windbg 或者 OD,x64dbg (动态调试工具)
    IDA (静态分析)
    vscode (看mars的源码)
    vs2015(开发hook功能模块)
    dbgview(看调试输出日志)
    

    2 打开微信的Xlog日志输出

    我们知道腾讯微信开源了 mars,可以看下Mars的框架,下面用官网的图来展示下:

    1554386667029

    可以看出来Mars的上层就是Wechat或者各种各样的App,Mars提供了xlog组件,这是一个高可靠性高性能的运行期日志组件,也就是说xlog是微信的看门人,我们首先要做的就是先让看门人说话.

    一般我们开发log组件的时候,一个基本的功能就是根据log等级来输出
    log组件除了能根据log等级来输出之外,还有个比较有用的功能是指定输出的方式,是输出到文件中,还是输出到终端中
    

    typedef enum {
    kLevelAll = 0,
    kLevelVerbose = 0,
    kLevelDebug, // Detailed information on the flow through the system.
    kLevelInfo, // Interesting runtime events (startup/shutdown), should be conservative and keep to a minimum.
    kLevelWarn, // Other runtime situations that are undesirable or unexpected, but not necessarily “wrong”.
    kLevelError, // Other runtime errors or unexpected conditions.
    kLevelFatal, // Severe errors that cause premature termination.
    kLevelNone, // Special level used to disable all log messages.
    } TLogLevel;

    xlog定义中定义了上述的log的等级,代码位置Tloglevel ,一般我们在本地测试的时候会把所有的log都输出,也就是使用kLevelAll,而在线上产品的话一般是设定kLevelInfo以上的输出,而在Mars代码中,这个函数就是xlogger_SetLevel函数,另外指定终端输出方法是appender_set_console_log函数。

    从Mars的xlog源代码上来说就是设置了两个全局变量 gs_level和 sg_consolelog_open。

    所以这里我们整理一下思路:

    我们只需要在wechawin.dll里找到对应的 gs_level和 sg_consolelog_open,并对其修改,就能让微信自身输出功能日志的信息,然后我们通过这些日志信息去查找定位,我们想要分析的功能点
    

    这里,我们开始用IDA载入wechawin.dll,在IDA里静态分析查找这Xlog的两个开关全局变量。
    查找定位sg_consolelog_open变量

    我们通过mars的源码中知道xlogger_appender函数中出现了sg_consolelog_open全局变量,并且这个函数的特征很好找,有字符串“xlogger_appender Recursive calls”,所以我们只需要在IDA里中一搜索就能出现这个字符串,看那个函数在引用这个字符串,就能找到对应的xlogger_appender函数,并且找到这个sg_consolelog_open全局变量的偏移,这里我们已经找到改函数,我们把函数命名下。

    appender

    1554391308296

    我一般命名的方式的 dll名字::函数名字 这样的好处是你一打dll名字在IDA的函数搜索框中,你所有的函数都会展示出来,不用花时间去记
    查找定位gs_level变量

    从Mars中查找代码,发现gs_level没有什么别的函数用上,那找下xlogger_SetLevel吧,mars的例子中给我们调用xlog初始化的示例,

    sample

    也就是说appender_open函数附近会出现xlogger_SetLevel调用,我们找下appender_open的字符串特征“appender has already been opened”,在IDA中找到这个字符串的引用的函数,同样命名为

    1554389314041

    接着,再查找下这个函数的引用

    1554389490747

    注意下图片里红框里面的函数,我们进去可以看到这个函数只是给一个全局变量赋值,这个就是xlogger_SetLevel函数了

    1554391354020

    至此我们找到了这两个全局变量的偏移

    后面等微信进程启动后,我们用windbg或者OD附加上去,修改这两个值,gs_level改成0(表示kLevelAll), sg_consolelog_open改成1(表示打开日志输出),这两个变量都是DWORD,修改完成后调试器退出附加

    如果我们不用调试器而是代码处理的话,就是如下图所示了

    1554732065373

    不管是我们用代码还是调试器处理, 我们都能通过dbgview看到log输出了, 大家可以看下log输出,还是蛮漂亮的

    1554457095257
    3 通过微信的Log定位关键功能以及获取登录二维码逻辑分析

    搞定了PC微信的Log输出后,现在微信这个XLog看门人开始说话,我们就需要仔细的聆听看门人的倾诉,同时,脑子里面记着微信二维码登录的原理,如果幸运的话,我们就能够从看门人的话语中梳理出完整的脉络,我们知道二维码的相关的数据应该是搜索QRcode,所以这里先把log从dbgview中导出,然后搜索关键字QRCODE

    我们能看见这样的一条log,这个是第一个带有QRCODE的日志

    [16516] [I][MMPC_QRCodeLoginMgr][QRCodeLoginMgr.cpp, QRCodeLoginMgr::getQRCodeImage, 173][first CGI, to get QRCode Image!

    可以先猜测下这个是整个获取二维码数据逻辑的开头,看样子是说准备向服务器要数据了,我们沿着一路往下看

    接下来我们会看到第二条相关的日志

    [16516] [I][MMPC_NetSceneGetLoginQRCode][NetSceneGetLoginQRCode.cpp, NetSceneGetLoginQRCode::onGYNetEnd, 85][getLoginQRcode success, UUID = Ad2ee0iiaXVVEIaiKhP8, checkTime = 15

    哈哈,这里出现了UUID,还记得我们在微信二维码登录原理里面说的那样吗?服务器这个时候给了我们一个UUID了,我们有理由相信,NetSceneGetLoginQRCode::onGYNetEnd有可能就是解码服务器数据的函数,我们接着往下看,看看能不能找到二维码显示的逻辑

    [I][MMPC_QRCodeLoginMgr][QRCodeLoginMgr.cpp, OnCheckQrCodeTimerCallback, 97][OnCheckQrCodeTimerCallback

    看看这个,回想下我们在微信二维码登录原理里面所说的,这个应该就是客户端向服务端查询登录状态的逻辑了,也就是说二维码在这个日志出现前就已经显示给用户了,但是我们用QRCODE做关键字,看下来是没有找到显示的逻辑,我们还是往上看看,从二条日志开始的位置到第三条日志出现的位置,我们一条条的看.

    在这两条日志之间,我们会看到这样一条日志

    [D][MMPC_CImageUI][UIImage.cpp, CImageUI::LoadPicture, 381][ load image

    这条很可疑,我们IDA查看下这个log

    1554263743564

    进入到sub_1047DDB0函数里面一看,

    1554271719062

    注意上图中的两个标注的函数,其中v28就是原始的二维码数据buffer,v3是size,这里为啥我们会这么肯定呢,可以看下Memory-Buffer-into-GDI-Image-FromStream这个文章的示例

    char *ibuf = new char[ze.unc_size];
    hBuffer = ::GlobalAlloc(GMEM_MOVEABLE,ze.unc_size);
    UnzipItem(hz, i, ibuf, ze.unc_size);

        if(hBuffer)
        {
                void* pBuffer = ::GlobalLock(hBuffer);
                if(pBuffer)
                {
                        CopyMemory(pBuffer, ibuf, ze.unc_size);
                        IStream* pStream = NULL;
    
                        if(::CreateStreamOnHGlobal(hBuffer,FALSE,&pStream) == S_OK)
                        {
                                m_BackImage = Gdiplus::Image::FromStream(pStream,false);
                                pStream->Release();
    

    有没有发现文章的例子和我们图片的很相似呢,现在我们能知道了CopyMemory中的第二个参数就是原始的二维码数据,第三个参数是buffer的长度

    void CopyMemory(
    In PVOID Destination,
    In const VOID *Source,
    In SIZE_T Length
    );

    我们再在sub_1047DDB0中查看下v28和v3参数的来源,我们可以看到

    1554457939884

    其中v28是a2,v3是a1赋值,而a1是edx寄存器赋值,a2是ecx赋值,也就是sub_1047DDB0的 edx是二维码数据的Size, ecx是二维码数据的buffer, 我们可以看下上层对sub_1047DDB0的调用,确实可以看出来edx是此时的size,ecx是此时的二维码数据buffer

    1554458195804

    至此我们找到了这个二维码数据的显示, 我们的hook点可以是下面这句代码的位置

    mov edx, [esi+1204]

    然后hook代{过}{滤}理函数是,我们采用裸函数的写法写这个hook函数,需要自己平衡堆栈

    1554477005139

    而QRCODEProxy的函数原型如下

    VOID __stdcall QRCODEProxy(LPBYTE lpdata, DWORD dwdatalen, LPVOID lpthis)

    1554477435902

    我们的关键就在替换掉指针这两行代码中, 这个buffer数据就是我们彩色二维码,hook成功后我们相关的log如下

    1554477808822
    4 总结

    我们从原理入手,看网上的原理说明,猜测PC的实现逻辑,然后开启log验证我们的想法

    逆向大项目的时候,都是先提出假设,然后验证你的假设, 而这个假设的提出,像我们这次,就是在理解原理的情况下完成的,我们逆向分析其实就是还原作者的设计实现,如果你在理解原理的情况下是比较容易去分析出实现的,其实这个是个非常实用的逆向分析思维,这个也是为什么有的人分析速度很快,几个断点下来事情就ok了

    那还有的其实这里面我们没有去分析他的回包数据,我们在log中能看到NetSceneGetLoginQRCode::onGYNetEnd函数解包,那么二维码的回包的协议结构是怎么样子的,里面哪个字段是二维码数据的buffer,这个buffer和最终的二维码buffer是一样的嘛,等等这些,我们都没有去分析,感兴趣的朋友也可以发散的逆向下这些逻辑
    5 demo代码

    我们获取了这个显示逻辑能有什么用呢,我们知道微信扫码的二维码是黑白的,很丑,而网络上的二维码有的是变色的,有的还带有logo,我们可以先解码原始微信的二维码数据,然后将这个数据再进行编码,从而让我们的二维码是多彩的

    针对2.6.7.57的wechatwin,写了个demo来实现我们刚才所说的4里面的,显示多彩的二维码,代码中的hook只硬编码针对了2.6.7.57,这里没有放上效果图,有兴趣的朋友可以安装下这个插件,直接放到微信安装目录下,version.dll劫持

    这个就是我们的二维码数据了

    1554477874610

    由于附件上传大小限制,所以我放到百度网盘了

    需要的私我

    微信被人诟病的一点就是文本通讯没有采用端对端加密,我们可以自己动手,简单加以改造,打造自己的微信端对端加密,保护隐私,从我做起,敬请期待!

    1554739243566
    7 参考来源

    https://www.biaodianfu.com/weixin-qrcode.html
    https://github.com/Tencent/mars
    https://www.experts-exchange.com/questions/23372362/Memory-Buffer-into-GDI-Image-FromStream.html
    https://www.superbed.cn/
    
    展开全文
  • 一、生成二维码 1、获取appid,appsecret,利用工具: https://mp.weixin.qq.com/debug/ 获取access_token 2、利用接口产生二维码 https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html 可以...

    一、生成二维码
    1、获取appid,appsecret,利用工具:
    https://mp.weixin.qq.com/debug/
    获取access_token
    2、利用接口产生二维码
    https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html
    可以利用postman来进行:
    这里写图片描述

    3、接收页面的代码

    onLoad(options) {
        if (options.scene) {
          console.log("has scene");
          var scene = decodeURIComponent(options.scene);
          console.log("scene is ", scene);
          var arrPara = scene.split("&");
          var arr = [];
          for (var i in arrPara) {
            arr = arrPara[i].split("=");
            wx.setStorageSync(arr[0],arr[1]);
            console.log("setStorageSync:",arr[0],"=",arr[1]);
          }
        } else {
          console.log("no scene");
        }
      },

    4、开发阶段的测试
    因为要发布有线上的代码,并且配置的path也在线上的版本中有配置才能真正使用,那测试阶段如何操作?
    用开发者工具进行模拟:
    这里写图片描述

    这个是自定义的,模式名称是自己起的,启动页面,设为自己想要的,启动参数key为secne,value是经过encodeURIComponent编码的(因为在调用接口的时候,这些值也是会被encode处理,在接收的页面处理中,统一用decoce恢复),进入场景不知道有多大作用,这里选扫描小程序码或者扫描二维码都行。

    展开全文
  • 在今天举行的2017微信公开课PRO版上,腾讯微信负责人张小龙表示,微信小程序特性是:无须安装、触手可及、用完即走、无须卸载。 张小龙解答了关于小程序的疑问,并透露小程序计划于2017年1月9日正式上线。 ...
  •  正常情况下,打开微信小程序开发工具后,首页提示扫描二维码进行登陆,但是如果不显示二维码,当然无法登陆。 解决方案:  无法显示二维码肯定是程序运行哪里出错了,我们直接点击桌面图标是无法排查错误,所以...
  • https://blog.csdn.net/brightming/article/details/81953571?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_...
  • 电脑用时间长了,昨天重做了系统,安装了开发者工具之后发现打不开,等了好久打开后居然黑屏。我以为是系统没做好又重装了一遍,后来在社区查了下,才知道,这个问题很普遍。 解决办法: 你好,黑屏问题麻烦打开...
  • 用的是最新版本的微信开发者工具,不只是没有代码模块而且报错 类似下面这样的吧反正是请求报错 新建的项目请求报错 因为网络代理软件或者 VPN 影响,工具无法加载本地模拟开发服务 请尝试以下任一解决方案 1.关闭...
  • 微信开发二维码生成生成二维码无非就是将一段字符串内容以某种特定的方式进行编码, 最终得到一个图片。 这里使用 C# 生成二维码我用到了 QrCode.Net 这个 Nuget 包。 这里我们创建一个名为 QrCodeGenerate 的 ...
  • 微信开发者工作是微信官方提供的针对微信小程序的开发工具,集中了开发,调试,预览,上传等功能。微信开发者工作是微信官方提供的针对微信小程序的开发工具,集中了开发,调试,预览,上传等功能。微信团队发布了...
  • GIS-微信小程序(4)

    2020-01-05 12:05:26
    在PC客户端双击微信开发者工具图标会弹出二维码扫描页面,开发者用手机微信扫描PC端的二维码确认身份,扫描成功后,在手机端用户点击跳转页面的“确认登录”即可以登录并使用微信开发者工具 在扫描二维码的过程中...
  • 上一篇文章中https://blog.csdn.net/u014650759/article/details/90701866,我们已经安装好了微信开发者工具,并导入了一个Demo项目,这篇文章,将就开发者工具进行简单的介绍,方便你开发实用编译器,更好的开发小...
  • https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140 ... 微信手机端调试工具[下载地址] (https://mp.weixin.qq.com/wiki/10/e5f772f4521
  • 选择“添加编译模式"-->编辑启动参数 转载于:https://www.cnblogs.com/qianqiu-1026/p/8462309.html
  • 上一篇《微信开发学习总结(一)——微信开发环境搭建》我们已经完成了微信开发的准备工作,准备工作完成之后,就要开始步入正题了。 一、微信公众平台的基本原理  在开始做之前,先简单介绍了微信公众平台的基本...
  • 最近在使用微信开发者工具开发微信小程序进行调试,遇到过两次这种问题,查阅网上解决办法,做下记录。 1、重新启动微信开发者工具 2、等一段时间再试试 3、卸载重装。。。。。 这个问题好多人都有遇到,...
  • 为了帮助开发者简单和高效地开发和调试微信小程序,我们在原有的公众号网页调试工具的基础上,推出了全新的微信开发者工具,集成了公众号网页调试和小程序调试两种开发模式。 使用公众号网页调试,开发者可以调试...
  •  现在的App一般都会带有支付功能,而现在比较流行的支付一般有支付宝、微信、银行卡等,一般情况下,应用开发者会直接对接支付宝、微信或者第三方支付公司的Api,以完成支付,但是都需要收取不小的费率,于是,有的...
1 2 3 4 5 ... 20
收藏数 6,960
精华内容 2,784
关键字:

微信开发工具启动无二维码