小程序总括

  • 在分析/逆向
    程序时,如果事先知道这类程序的一些特征,那将会是事半功倍的;
  • 分析/逆向
    程序,和写程序不同,比喻的话:写程序像在作案,分析/逆向
    程序就像是在破案,对破案来讲,重在假想和推理;

结束了DZ移动web端的开发,开始接纳小程序,在此收集下自己和网友的跳坑积累和一些总结吧。

奥门威尼斯网址,――异乡的赶集之路

各种Android操作系统的手机简直就是琳琅满目,屏幕分辨率的差异可想而知。目前比较主流的有WVGA=800×480,HVGA=480×320,另外的还有QVGA=320×240。当然还有魅族M9的DVGA=960×640,还有蛋疼的摩托罗拉的FWVGA=854×480。

1.授权登陆
2.canvas保存图片
3.推送通知
4.客服消息
5.scrollview和onscoll

特征1:VC链接器版本


奥门威尼斯网址 1

  其实,在你layout的xml文件中,编写的时候是不是用了许多的padding呢?如果是,那你就蛋疼了。因为这样的布局永远是无法适应所有手机屏幕的。

6.组件
7.WXS
这个模块应该很多人都没有用到 但是却很有用 有一些你不想在js里面处理的逻辑
可以单独拿出来 放到模块里面处理
引用模块的方法可以直接在页面上执行并返回数据
给了页面上可以执行方法的能力

VS版本 链接器版本
VS2017 14.12
VS2015 14.0, 14.1
VS2013 12.0
VS2012 11.0
VS2010 10.0
VS2008 9.0
VS2005 8.0
VC2003 7.0, 7.1
VC6/VB6/E语言 6.0
VC5/BC++ 5.0
Delphi 2.25
VB5

4.20

1.刷新或编译出现空白,重新新建或导入项目。

这是极其普通的五光十色。

  正确的做法应该是使用的是weight属性。将你控件的layout中的width、height设置为fill-parent,不要使用wrap——content。因为wrap-content的大小是不固定的。而weight(权重)这个属性很好的解决了这个问题。

注意:include wxml里面是不能使用的 如果一定要用 那么就把它变成
template吧 用import引进去就好了
8.页面通信
遇到一些场景 在a页面要去修改b页面的状态 由于小程序不像h5那样有刷新的功能
b页面直接通过接口请求了返回到a页面状态还是不会同步
wx.navigateTo:新窗口打开页面(但前页面被缓存下来)
wx.redirectTo:原窗口打开页面
用wx.navigateTo打开页面的时候
当前页面被缓存了起来这就意味着从新页面返回的时候当前页面不会刷新
但是getCurrentPages()可以获得当前小程序活跃的页面
也就是说可以从这个页面栈里面拿到所有被缓存起来的页面的实例,当然可以调用相应的方法
不要把所有页面都缓存起来这样虽然都能一层一层返回
但是小程序限制了最多只能有5个页面被加入页面栈,超过5个页面再次调用wx.navigateTo的时候会直接进去fail方法并且页面也不会有任何变化

 

2.tabBar跳坑 
 作者Leo丶Dicaprio

只是一个像夏天的春天日子,在气象局所报道的全省逼近三十度的今天,阳光温柔到发烫,整个人便也一阵柔和。

  当包裹在控件外面的Layout的width、height属性都设置为fill-parent时,可以利用weight的反比特性。即如果控件A设置weight为5,控件B设置weight为7,那么A所占的空间为5/(5+7),B所占的空间为7/(5+7)。这样的反比属性对任何分辨率下的手机都是合适的。

注意:从首页跳出去的都用wx.navigateTo打开 保证返回的时候都能到首页
返回按钮是去读的getCurrentPages()所以如果跳转都用wx.navigateTo
点击返回就直接退出了

 

3.开发IDE整理

“去赶集吧?”――“好呀,去赶集。”
两句话,如此便是说好了。两人似丝毫不知明日长长的小土路和满天的柳絮漂浮,也未曾察知许久没有这样几句话便说好的出行了。以前,多的是顾忌。

  当然,字体就不行了。那怎么保证字体能够跟布局一样能够自适应呢?
  呵呵,很简单,就是在你的res文件夹中创建一个文件夹,叫做values-320×240。其中320×240是你手机屏幕的分辨率,根据你手机屏幕的情况做不同的命名,例如values- 800×480。在该文件夹下创建一个dimens.xml文件,定义各种字体的大小。那么系统就会自动根据你手机屏幕的分辨率去调用响应的文件夹。

 

4.服务器端传的二维数组,数据是json格式,比如

天气果真很好,路途却不如想象般完美,太阳大的让我睁不开眼,而柳絮的放肆挥洒也着实让我无法呼吸。两人只能无奈地笑笑,脚步却是丝毫没有停下。是多久了呢?站在集的入口,想着自己许久许久没有走在这样的地方了。老家也有集,与这儿并无几分差别,多多的人,多多的东西,是我小时候最喜欢的地方,数着日子,隔五天,到了那天便会很高兴很高兴。只是如今鲜少有机会再去挤一挤那拥挤的人群了。

    另外,值得提醒的是,记得在你默认的values文件下的dimens.xml文件中也要写上相应的字体大小哦,因为当系统无法认识你手机屏幕大小的时候,它会自动去找你默认文件中的

 

奥门威尼斯网址 2

买了很多东西,两只手满满的。左边是三袋子西红柿,是那三个人爱吃的;右手边是一袋子爆米花,按要求六元一包找到的,刚爆出来,还烫着,忍不住先吃了一个。那把玉米放进小炉子的小哥,年龄并不大,手法却很娴熟。他很安静地一圈圈摇着黑色的把手,话并不多,似乎与这嘈杂的街道并不相融。年纪不会有我大的,这次再看了他一眼。他眼底的,我猜,是看着街上像我们一般闲逛的笑容洋溢的学生们的羡慕,是呀,是羡慕。在感知到这样的东西之后,忽然便不敢再看他了,我怕我会往更多想下去,无论是关于他,还是关于现在并不出色的我们。于是,移开了目光,环顾一下周围,再笑笑,像是什么都没有发生,刚刚一切都是错觉。

东西,没有写的话程序会崩溃。

 

我们可以直接获取,小程序会自动解析,接着手动绑定(dataList:res.data),最后需要注意的是{{item.msg}}是无法直接显示,需要改为{{item[0].msg}};

太阳正值头顶,想想该回去了。生性并不喜热闹,却极喜欢这样的人群,这种矛盾一直在有,如今静下来思索,想必我只是喜欢看人群中的人而不想将自己置身于其中,看着形形色色的人,忙碌悠闲,开心忧愁,仿佛自己是一个旁观者。而其实我深知,更有可能是喜欢自己的这样一种状态,不用说,不用附和,只看便能知晓好多,无论是事或是人或是情感。这种状态极其令一个不善言辞的人欢喜。

************************************************************分割线************************************************************

 

5.微信小程序使用字体图标的方法 

往回走了。不知为何,在我这里“回”总比“去”来的容易,总觉去时漫长而回时极快,这是归心似箭还是依依不舍?恐怕我又要沉入这美丽的矛盾了。这小路有些硌脚,像小时走过的乡间小路,只两旁少那么几株小野花,路上少几个熟识的大伯大婶,身旁少那几个蹦蹦哒哒的小孩子,而身后也少了那个满眼笑意的身影。总之,走过很多地方,它像,有时也让我恍惚,却终究不是。

  在看下面内容之前首先请看你SDK文档中以下这篇文章

 

6.上拉加载和下拉刷新

很想哪次再回去,挤在狭窄小道的人群中,吃一吃想了很久的小吃,见一见想了很久的人。“哪次吗?”――“下次吧。”

奥门威尼斯网址 3

 

最新api已经跟进了方法,下拉:onPullDownRefresh: function( e ) {

  其实google在分辨率适应性的东西已经写的很清楚了,只是我们很多人没去看而已

 

console.log( “下拉刷新….” );

  以下是结论:
    屏幕分辨率:1024×600
    density:1(160)
    文件夹:values-mdpi-1024×600

 

this.requestData();

    屏幕分辨率:1024×600
    density:1.5(240)
    文件夹:values-hdpi-683×400  由1024/1.5  600/1.5得到,需要四舍五入。

 

},上拉:onReachBottom : function( e ) {

    屏幕分辨率:800×480
    density:1(160)
    文件夹:values-mdpi-800×480

 

console.log( “上拉加载….” );

    屏幕分辨率:800×480
    density:1.5(240)
    文件夹:values-hdpi-533×320  由800/1.5  480/1.5得到,需要四舍五入。

 

// this.requestData();

  以此类推
    一般情况下需要创建出values 、values-mdpi 、
values-hdpi文件夹,以备在一些没有规定的尺寸屏幕上找不到资源的情况。

 

},

    然后在里面使用不同的dimens文件,Layout中不要使用显示的数字,所有的尺寸定义全都援引dimens里面的内容。

特征2:OEP

同时,记得去app.js-window里设置”enablePullDownRefresh”:true;最好设置下backgroundTextStyle为dark,以免看不清效果。

    这样能够保证深度UI定制的情况

a0) VB5:


    另外在工程的default.properties中如果split.density=false,则分辨率适配的时候文件夹命名不需要与scale相除

【VB5】的OEP平衡堆栈是 sub
esp,0x54

  例
  屏幕分辨率:800×480
  density:1.5(240)
  文件夹:values-hdpi-800×480

【VB5】的OEP第一个API调用是GetStartupInfoA

************************************************************分割线************************************************************

【VB5】程序的IAT引用,都是FF15型的

  关于dimens 

奥门威尼斯网址 4

    位置:res\values
    单位:px   Pixel 以画面的像素为单位;
         in     Inches以画面的多少英寸为单位;
         mm  Millimeter以画面的多少毫米为单位;
         pt     Points 一点为1/72英寸;
         dp或dip  Density-indepentdent 为160dpi屏幕的一个pixel;
         ap Scale-independent Pixels 随屏幕尺寸改变的一个pixel;

奥门威尼斯网址 5

最后总结就是要想不求人 ,英语得过关!!!

a1) VB6

 

【VB6】的OEP平衡堆栈是
sub esp,0x4C


【VB6】的OEP第一个API调用是GetStartupInfoA

原帖地址:

【VB6】程序的IAT引用,都是FF15型的

 奥门威尼斯网址 6

奥门威尼斯网址 7

b0) Delphi

【Delphi】OEP上面是一个地址
【Delphi】OEP处
有5个CALL
【Delphi】OEP
5个CALL之后,全是0
【Delphi】OEP处第一个CALL有GetModuleHandleA调用
【Delphi】的IAT调用是
FF25形式的

奥门威尼斯网址 8

奥门威尼斯网址 9

b1) BC++

【BC++】
二进制特征:EB1066623A432B2B484F4F4B90
【BC++】
OEP的第一个API调用是 GetModuleHandleA
【BC++】 IAT调用是
FF25形式的

奥门威尼斯网址 10

c)
VC6/E语言(通过分析,发现二者特征一致,可以判定E语言和VC6如出一辙)

【VC6】的OEP平衡堆栈是
sub esp,0x58 或 sub esp,0x68或add esp, -0x5C

【VC6】的OEP第一个API调用是GetVersion

【VC6】程序的IAT引用,都是FF15型的

奥门威尼斯网址 11

d) VS2013

【VS2013】开始处,call
xxx; jmp xxx;
【VS2013】的OEP平衡堆栈是sub
esp, 0x44
【VS2013】的OEP第一个API调用是GetStartupInfoW
【VS2013】程序的IAT引用,都是FF15型的

奥门威尼斯网址 12

奥门威尼斯网址 13

奥门威尼斯网址 14

 

这些特征,会对分析程序起到一定的帮助作用,这里,并没有完全列出全部的主流程序,希望抛砖引玉吧;

发表评论

电子邮件地址不会被公开。 必填项已用*标注