【由浅入深教你过签名验证】写一个简单的签名验证机制并过签名
本帖最后由 编草鞋的蚂蚱 于 2017-12-17 11:11 编辑这篇文章,写给刚入门的同学们,希望这篇文章在你拼搏的路上能对你有所帮助。
想要过一个签名,那么,怎样才能更深的了解和熟练的掌握呢??
就我个人而言,喜欢用最笨的方法,那就是,先写一个签名验证机制,然后再去过它,这样的话,更能加深印象。
给大家一个参考网址:file:///C:/Users/25225/AppData/Local/Temp/enhtmlclip/Image(3).pnghttp://blog.csdn.net/venusic/article/details/52347316
把里面的代码,拿过来用就行,
我尽量写详细点,大神别说我啰嗦,咱尽量既详细还不啰嗦
复制过来,会出现很多报错,那么,老规矩,alt+enter
然后在MainActivity里面调用,并加一个Log来查看我们的签名。这里会有小同学会一直提示报错,那么究竟是哪里呢?
你的报错会是:
到这里,下面会有提示,转到getapksignature类里面,根据提示看代码,
我们把private换成public是不是就可以了呢?
build apk,安装到手机,运行,在Androidmonito上查看Log,我们就得到了我们的签名。下面就开始增加一个判断机制,
箭头所指的字符串,就是我们刚才得到的本机的签名,判断做好了,build,安装,在手机上看能否正常运行。
正常运行之后,就是拿到Android kill里面签名了。
打开Android kill,
然后
把apk拖到apk路径下,
执行,
然后再放到手机里,运行,闪退,说明,我们成功编写了一个简单的签名验证机制。
这里,我会把自己曾经走过的弯路写下来,让大家共同参考:
好了,既然签名验证我们写好了,想过它,第一个想到的是什么?是不是要把它拿到Android kill里面去呢?
哇!看着好多的样子,好多小伙伴会高呼头疼。这也太多了吧!别着急,咱们是有技巧的。
类似于以Android主打的,我们不理它,这些都是系统的东西。
那要看的是哪里呢?
除了Android主打的,下面还剩大约15个内容,即使找也要找好一阵子,
有什么方法呢?加入拿到一个apk,搜索到signature如果在main里面,肯定是先要看main,当然,这个是咱们自己写的,当然知道在哪里。
倘若不是我们自己写的呢?我们该怎么去找??
有人会说,找[Landroid/content/pm/Signature,大哥,是能找到它,而且就一个,但是,你会发现,好些时候是没用的,因为那是搜索so里面的关键词,以后会讲到。似乎在这不感冒了。
这个时候,那么多东西要分析,我们是不是要想到一样工具?
是的,JEB
打开JEB
把apk拉进去
Ctrl+f,搜索signature,然后就是结合java代码,进行分析。
类似于这种的,我们就不要看了,都是系统的东西, 我们不必要看它
这个时候,你会搜到看似无穷无尽的类似代码,方法用不好,肯定会绕弯路!!!
看这里:
再看这里,想想你刚才搜索的是哪里
看到这里,你还会傻乎乎的乱搜么?
所以,搜后面类里面的吧!先搜main里面的。
找到了,那么,剩下的就是看怎么改了,
右键,转换到java代码,我们可以看到:
那么,接下来就是比对JEB的包名类名在Android kill里面找了。
也别嫌我啰嗦,尽量把步骤讲详细点,虽然这是我们自己写的,也是个超级简单的签名验证机制,一眼就能看出签名
但是,重要的是过签名的过程和思维。
进去看,
我们找到了它的验证判断:
从下面这张图,我们不难看出,判断语句的意思,如果v1不等于0,就会跳转到下面comd_0那里去,也就是说继续执行,
如果v1等于0 则执行下面的finish();退出程序。
那么现在来说,我们只要把nez改成eqz是不是就达到了过签名的目的了呢?
是的,把nez改成eqz就达到目的了
编译,安装,调试,成功!
完成!
这里,给大家留个作业来做做,练练手。
写一个签名验证机制,要求新建一个类把签名(如:5C77140D94B1E71EAA17C0DF5D19EADE02102012)放到里面的方法中,然后在main里面调用这个方法。并过它的签名。
后记:
今天给大家讲了一个签名验证机制的入门,下次抽时间会讲:给我们的签名加密,并调用。
难度是需要一步步增加的,这次讲的东西看似简单,方法很重要。
这些都只是刚刚开始。
hhbluestar 发表于 2017-12-1 16:57
请问下,回编译一个APP后,不能登录谷歌账户,提示签名错误。那是不是要把原签名找到才行?还是要核心破解 ...
这就是因为有签名验证,我写的这个教程是简单的过签名验证,建议先看一下签名有没有写在so里面,把so拉进IDA中去,搜索:[Landroid/content/pm/Signature,然后对判断进行修改。如果不在so里面,建议用拉进JEB系统包名之外搜索:signature,然后在Android kill里面找到签名的包名类名和方法名,在判断机制下进行修改,一般情况下只需把nez改成eqz或者是把eqz改成nez 本帖最后由 hhbluestar 于 2017-12-5 11:03 编辑
编草鞋的蚂蚱 发表于 2017-12-3 11:39
这就是因为有签名验证,我写的这个教程是简单的过签名验证,建议先看一下签名有没有写在so里面,把so拉进 ...
謝謝回復,但是并没有看到 so 文件,然后试着搜了下 Landroid/content/pm/Signature 只有两个文件里有,但有多处。。好难判断啊。。。不知道要怎么看了。。求教。。 前排占座 谢谢分享 看不懂啊!兄弟 先留个记号 Mark一下,以后来学校学习 学习了,谢谢分享。 还不懂,先收藏了,慢慢研究 谢谢分享 不错的,技术支持你