find函数

[转]安卓加固之so文件加固

心已入冬 提交于 2019-12-10 09:02:45
一、前言   最近在学习安卓加固方面的知识,看到了 jiangwei212 的博客,其中有对so文件加固的两篇文章通过节加密函数和通过hash段找到函数地址直接加密函数,感觉写的特别好,然后自己动手实践探索so加密,这里记录一下学习遇到的困难和所得吧,收获还是非常大的。 二、通过加密节的方式加密函数  1、加解密思路   加密:我们自己写一个Demo根据ELF文件格式,找到我们要加密的节,加密保存在ELF文件中   解密:这里有一个属性__attribute__((constructor)),这个属性使用的节优于main先执行,使我们解密有了可能。  2、实现流程   ①编写我们的native代码,在native中将要加密的函数置于一个节中,并将解密函数赋予__attribute__((constructor))属性     a.在函数申明后面加上 __attribute__((section(".mytext"))) ,将函数定义在我们自己的section中     b.我们需要编写一个解密函数,属性用__attribute((constructor))申明,这样就可以在在so被加载的时候,在main之前将我们的节解密。      然后使用ndk-build将native代码编译成so文件   ②编写加密程序(我这里使用VS2010)     a.解析so文件,找到

Ubuntu下创建vim+Taglist+cscope+ctags组合编辑器

守給你的承諾、 提交于 2019-12-10 06:33:39
有人抱怨Linux系统下没有类似于VC之类的方便快捷的编辑器,有人用gedit, 有人用vim,但是都不方便而且也没有自动补全之类的方便用户的功能。本文简单介绍使用vim中的几个插件(Ctags、Cscope和TagList) 实现一个强大的编辑器,希望可以帮助您学习、使用。 一、软件安装 Ubuntu给我们安装软件提供了很大的便利,比如说, 安装vim 我们可以直接使用" sudo apt-get install vim "即可安装! 同样, cscope和ctags也可以使用相同方法安装 ,这是多么畅快淋漓啊!感谢Ubuntu给我们用户如此便利! 对于 Taglist 使用这个方法安装不了,我们需要先下载,然后安装完成: 首先上网 下载Taglist插件 ,下载完成后解压,再将文件下的taglist.vim使用cp命令拷贝到HOME/.vim/plugin文件夹下(cp -r taglist.vim ~/.vim/plugin) 这样,vim+Taglist+cscope+ctags四种工具我们是安装好了,但是如何使用呢? 二、Vim简介及配置 vim 是一个非常好用的编辑工具,以下介绍几个常用的底行模式命令: (1). 设置缩进 :set smartindent // 设置缩进 :set smartindent shiftwidth=4 // C语言自动缩进

C++ boost 处理string

一笑奈何 提交于 2019-12-09 16:55:19
boost的字符串处理函数——string algorithm c++在stl库中提供了一个string类用以代替c语言的char*来实现字符串功能,不过stl的string只提供了一个连接字符串和查找的功能,其它的常用函数几乎一律没有,就连字符串替换都得自己来实现,和c#的字符串函数比起来简直弱爆了。 boost库在头文件<boost/algorithm/string.hpp>中提供了不少字符串处理函数,用以帮助我们实现基本的字符串处理功能,极大程度上缓解了字符串函数不够用的问题。 string str1("hello abc-*-ABC-*-aBc goodbye"); vector<string> SplitVec; // #2: Search for tokens split(SplitVec, str1, is_any_of("-*"), token_compress_on); // SplitVec == { "hello abc","ABC","aBc goodbye" } 上述代码就提供了一个split的功能,不过和c#的版本相比,还是不够简洁,如果设计成这样就更加好用了: auto SplitVec = split(str1, is_any_of("-*"), token_compress_on); 之所以不以这种形式设计

基于Scrapy框架爬取厦门房价

↘锁芯ラ 提交于 2019-12-08 21:26:19
本文的运行环境是Win10,IDE是Pycharm,Python版本是3.6。 请先保证自己安装好Pycharm和Scrapy。 爬取的网站是国内著名的房天下网,网址: http://esf.xm.fang.com/ ,网站界面如下图所示。 网站列表界面.png 网站详情界面.png 可以看出该网站信息较为全面。 用Scrapy的Shell测试该网站是否能爬取。 方法是在任意位置打开cmd或者PowerShell,输入命令 scrapy shell "esf.xm.fang.com" , 一般来说不会出现错误,如果报错 ImportError: DLL load failed: 操作系统无法运行 %1。 ,解决方法是 把C:\Windows\System32目录下的libeay32.dll和ssleay32.dll删除即可 。 确定命令正确后运行,结果如下图。 测试能否爬取1.png 在 In[1]: 后输入命令 view(response) ,确认命令正确后运行,会自动弹出浏览器窗口,如果出现如下图所示网站,则表示scrapy可以顺利从网站获取信息,即可以完成爬虫任务。 测试能够爬取2.png 从上图看出运行命令后打开的是本地的网站,即网站内容可以顺利从服务器缓存到本地。 在你的工程文件中按住Shit,鼠标右击呼唤出下图所示菜单。 选择下图所标识的

Python进阶-Ⅸ 递归 二分法

烈酒焚心 提交于 2019-12-06 10:54:52
1、算法 英文名:algorithm,就是计算的方法。# 是截止到目前,人类发现的针对特定场景的,最优的计算方法。是人类智慧的结晶。# 人脑是复杂的,电脑其实很简单。比如:999 * 123 人类会将其变为: 1000 * 123 - 123 这样就好算多了,可是电脑不会如此,只会硬算! 学习算法的目的# 我们学习的算法 都是过去时# 了解基础的算法 才能创造出更好的算法# 不是所有的事情都能套用现成的方法解决的# 有些时候会用到学过的算法知识来解决新的问题 2、递归 1)、楔子 有如下例子:从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:"从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:'从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:............................. # 看到这个例子,有何感想?这不是车轱辘话码,自己说自己!# 这就对了,我们就正式引入递归! 2)、递归函数的定义 在函数中,自己调用自己的函数,叫递归函数。 1 depth = 0 2 def temple_story(): 3 global depth 4 print('从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天

python爬虫--数据解析

一个人想着一个人 提交于 2019-12-06 10:27:58
数据解析 什么是数据解析及作用 概念:就是将一组数据中的局部数据进行提取 作用:来实现聚焦爬虫 数据解析的通用原理 标签定位 取文本或者属性 正则解析 正则回顾 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字、字母、下划线、中文 \W : 非\w \s :所有的空白字符包,括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 \S : 非空白 数量修饰: * : 任意多次 >=0 + : 至少1次 >=1 ? : 可有可无 0次或者1次 {m} :固定m次 hello{3,} {m,} :至少m次 {m,n} :m-n次 边界: $ : 以某某结尾 ^ : 以某某开头 分组: (ab) 贪婪模式: .* 非贪婪(惰性)模式: .*? re.I : 忽略大小写 re.M :多行匹配 re.S :单行匹配 re.sub(正则表达式, 替换内容, 字符串) 正则练习 import re #提取出python key="javapythonc++php" res = re.findall('python',key)[0] #re.findall('python',key)返回的结果是列表类型的数据 print(res) #提取出hello world key="<html>

BeautifuSoup实用方法属性总结

混江龙づ霸主 提交于 2019-12-05 17:40:47
一、对象 Beautifulsoup中有4个重要的对象: Tag,标签,可以获取标签文本,属性 BeautifulSoup,继承自Tag,所以Tag的方法它基本都能用 NavigableString,文本字符串 Comment,注释 二、创建BeautifulSoup对象 2.1 通过字符串创建 from bs4 import BeautifulSoup html = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="story">Once upon a time there were three little sisters; and their names were </p> """ soup = BeautifulSoup(html, 'html.parser') print(soup.prettify()) 2.2 通过文件创建 from bs4 import BeautifulSoup with open(r"F:\tmp\etree.html") as fp: soup = BeautifulSoup(fp,"lxml") print(soup.prettify()) 三、Tag关系属性 关系 说明 parent 父节点 parents 祖先节点 next

STL 简介,标准模板库

匆匆过客 提交于 2019-12-04 12:53:19
这篇文章是关于C++语言的一个新的扩展——标准模板库的(Standard Template Library),也叫STL。 当我第一次打算写一篇关于STL的文章的时候,我不得不承认我当时低估了这个话题的深度和广度。有很多内容要含盖,也有很多详细描述STL的书。因此我重新考虑了一下我原来的想法。我为什么要写这篇文章,又为什么要投稿呢?这会有什麽用呢?有再来一篇关于STL的文章的必要吗? 当我翻开Musser and Saini的页时,我看到了编程时代在我面前消融。我能看到深夜消失了, 目标软件工程出现了。我看到了可维护的代码。一年过去了,我使用STL写的软件仍然很容易维护。 让人吃惊的是其他人可以没有我而维护的很好! 然而,我也记得在一开始的时候很难弄懂那些技术术语。一次,我买了Musser&Saini,每件事都依次出现,但是在那以前我最渴望得到的东西是一些好的例子。 当我开始的时候,作为C++一部分的Stroustrup还没出来,它覆盖了STL。 因此我想写一篇关于一个STL程序员的真实生活的文章可能会有用。如果我手上有一些好的例子的话,特别是象这样的新题目,我会学的更快。 另外一件事是STL应该很好用。因此,理论上说,我们应该可以马上开始使用STL。 什麽是STL呢?STL就是Standard Template Library,标准模板库

jquery中filter()和find()函数区别

天大地大妈咪最大 提交于 2019-12-04 09:24:24
通常把这两个函数,filter()函数和find()函数称为筛选器。 下面的例子分别使用filter函数和find函数对一组列表进行筛选操作。 一组列表: 1 <li>1</li> 2 <li class="f">2</li> 3 <li><a>3</a></li> 4 <li>4</li> 5 <li>5</li> filter()函数 1 $('li').filter('.f').addClass('filter'); find()函数 1 $('li').find('a').addClass('find'); 完整的html代码: 1 <html> 2 <head> 3 <title>filter和find函数</title> 4 <script src="jquery.js"></script> 5 </head> 6 <body> 7 <li>1</li> 8 <li class="f">2</li> 9 <li><a>3</a></li> 10 <li>4</li> 11 <li>5</li> 12 </body> 13 <script> 14 $('li').filter('.f').addClass('filter'); 15 $('li').find('a').addClass('find'); 16 </script> 17 </html>

Python爬虫学习纪要(二):BeautifulSoup相关知识点2

房东的猫 提交于 2019-12-04 05:29:18
三、树的搜索: 1)find_all(name, attrs, recursive, string, limit, **kwargs): 该方法将搜索当前Tag对象的所有子节点,并且按照过滤条件得到筛选后对象的列表。 name参数 : 1.1、传字符串: # print(soup.findAll('a')) 1.2、传正则表达式: # import re for tag in soup.findAll(re.compile('^b')): print(tag.name) 1.3、传列表: # soup.findAll(['a', 'b']) 1.4、传True:(注:True参数将匹配文档中所有的节点,但是不包括文本字符串) # for tag in soup.findAll(True): print(tag.name) 1.5、传入函数:(注:可以根据函数返回值的True/False来得到匹配的节点) # def has_class_but_no_id(tag): return tag.has_attr('class') and not tag.has_attr('id') # soup.findAll(has_class_but_no_id) 关键字参数 : 可以传入一个或者多个关键字,BeautifulSoup会搜索当前Tag下的每一个节点的该关键字及其对应的值。 #