首页 文章 精选 留言 我的

精选列表

搜索[Harness工程],共10000篇文章
优秀的个人博客,低调大师

Python全栈工程师

ParisGabriel Python 入门基础 print(“hello world”)变量 : 存储信息的,日后被调用、修改操作常量: 固定不变的量,字母大写命名规则:1. 字母数字下划线组成2. 不能以数字开头,不能含有特殊字符和空格3. 不能以保留字命名4. 不能以中文命名5. 定义的变量名应该有意义6. 驼峰式命、 下划线分割单词7. 变量名区分大小写a=1b=2if a<b: print("Yes") print("Yes") print("Yes") print("Yes")else: print("No")a=1b=2 if a>b: print("Yes") elif a==b: print("第三") else: print("any") if 条件1: 自拍elif 条件2: 蹦 else: 跳舞 # 单行注释'''多行注释'''""" 多行注释 """ input() "abc" + "qwe" file.py 文件的扩展名:.py : python的程序文件.txt : 文本文件pdf chm html doc xml xls ppt jpg png gif jpeg bmpavi rmvb MP4 mkv 3gp WMV MP3 flue mid True 真 正确的False 假 错误的 a b = 100c = 1000 if b <= a <= c: print("True") num number num1 = intpu("Num1:")num2 = intpu("Num2:")num3 = intpu("Num3:") 输出三个数字中的最大值/最小值 if num1>num2>num3: #num1最大else: #num1<num2 if num1>num2>num3 #num1最大elif num1>num3>num2 #num1最大elif num2>num1>num3 #num2最大elif num2>num3>num1 #num2最大elif num3>num2>num1 #num3最大else num3>num1>num2 #num3最大 num1 num2 num3 max_num =0if num1>num2: max_num= num1 if max_num > num3: print("Max NUM is",max_num) else: print("Max NUM is",num3)else: max_num = num2 if max_num > num3: print("Max NUM is",max_num) else: print("Max NUM is",num3) num += 1 等价于 num = num + 1num -= 1 等价于 num = num - 1num *= 2 等价于 num = num * 2num /= 2 等价于 num = num / 2num //= 2 等价于 num = num // 2num %= 2 等价于 num = num % 2num **= 2 等价于 num = num ** 2 and 且,并且只有两个条件全部为True(正确)的时候, 结果才会为True(正确) 条件1 and 条件2 5>3 and 6<2 True or 或,或者只要有一个条件为True,则结果为Ture,5>3 or 6<2 真 或 假 not 不,雅蠛蝶 not 5>3 == Falsenot 5<3 == True a>b and (c>d or (not f)) (not (not True)) or (False and (not True)) 条件1 and 条件2条件1 or 条件2 短路原则对于and 如果前面的第一个条件为假,那么这个and前后两个条件组成的表达式 的计算结果就一定为假,第二个条件就不会被计算 对于or 如果前面的第一个条件为真,那么这个or前后两个条件组成的表达式 的计算结果就一定为真,第二个条件就不会被计算 True or True and False 猜年龄 age = 50 user_input_age = int(input("Age is :"))if ....while 循环 while 条件: print("any") print("any") num = 1 while num<10: # 2 print(num) # 2 num+=1 # 3 if num == 9: # 3 breaknum = 1 while num<=100: # num<=100 等价于 True # while num<=100: 等价于 while True: if num%2 == 0: print(num) num += 1num = 1 while num<=100: if num%2 == 1: print(num) num += 1 age = 50 #user_input_age = int(input("Age is :")) flag = True while flag: user_input_age = int(input("Age is :")) if user_input_age == age: print("Yes") flag =False elif user_input_age > age: print("Is bigger") else: print("Is smaller") print("End") break # 终止age = 50 #user_input_age = int(input("Age is :")) #flag = True# break while True: user_input_age = int(input("Age is :")) if user_input_age == age: print("Yes") break elif user_input_age > age: print("Is bigger") else: print("Is smaller") print("End") continue 继续 if a>b and d<f or 5>3 and d == e: ...... while 条件: ....else: .... statement 语句 num = 1while num <= 10: num += 1 if num == 5: break print(num)else: print("This is else statement") while 条件1: ..... while 条件2: .... 1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9.... #print("hello world.",end="__") # \n \r\n \r#print("hello world.",end="__")#print("hello world.",end="__") num1 = 0 while num1<=5: print(num1,end="_") num2 = 0 while num2<=7: print(num2,end="-") num2+=1 num1+=1 print() # print(end="\n") #0_0-1-2-3-4-5-6-7-#1_0-1-2-3-4-5-6-7- Height 高度width 宽度 height = int(input("Height:")) # 用户输入一个高度width = int(input("width:")) # 用户输入一个宽度 num_height = 1while num_height <=height: num_width = 1 while num_width <= width: print("#", end="") num_width += 1 print() num_height += 1 12345678223456783234567842345678 第一行的时候 8字符 8次循环第二行的时候 8字符 8次循环第三行的时候 8字符 8次循环第四行的时候 8字符 8次循环 width = int(input("width:")) num_width = 1 while num_width<=width: print("#", end="") num_width +=1print() num_width = 1while num_width<=width: print("#", end="") num_width +=1print() num_width = 1while num_width<=width: print("#", end="") num_width +=1print() num_width = 1while num_width<=width: print("#", end="") num_width +=1 #print("#",end="")#print("#",end="")#print("#",end="")#print("#",end="") print() num = 4 while num>0: print("#", end="") num -= 1 print() # @ == #### height = int(input("Height:")) # 用户输入一个高度width = int(input("width:")) # 用户输入一个宽度 #num2 = height num2 = height # 第一步: 赋值while num2 > 0: # 第二步 :num2 == 2 num1 = width # 第三步: 赋值 while num1>0: # 第四部:num1==2 # 第七步:num1 = 1 print("#", end="") # 第五步: 不换行 打印一个# 第八步: 不换行 打印一个# num1 -= 1 #第六步: num1 = 1 第九步: num1 = 0 print() # 第十步 : 只是换行 num2 -= 1 # 第十一步 : num2=1 #### print("1*1=",1) # "1*1=",1 == str(m)+"*"+str(n)+"=",1 m = 2n = 2 print( str(m)+ "*" + str(n) + "=" , m*n )line = 5 # 第一步 : 赋值while line>0: # 第二部 line=5 tmp = line # 第三部 : tmp =5 tmp=4 while tmp>0: # 第四部 : tmp =5 #第七步 tmp=4 #第十部: tmp=3 第十三步 tmp=2 print("*",end="") #第五步 #第八部 #第十一部 #第十四步 tmp = tmp-1 # 第六步 tmp = 4 # 第九步 tmp=3 # 第十二步 tmp=2 第十五步 tmp= 1 print() #print(line) line -= 1first = 1while first<=9: sec = 1 while sec <= first: print( str(sec)+"*"+ str(first) +"="+str(sec * first), end="\t") sec += 1 print() first += 1 今天太晚了明天要上课 明天晚上补图片 代码

优秀的个人博客,低调大师

iOS逆向工程之App脱壳

一、生成dumpdecrypted.dylib动态库 首先我们要生成“砸壳”用的动态库dumpdecrypted.dylib,我们“砸壳”时主要用到这个动态库。该动态库的源码在github上是开源的(Github地址),要想得到dumpdecrypted.dylib这个动态库,只需要从github上下载代码,然后进行编译,生成dumpdecrypted.dylib即可。下方就是使用make命令对dumpdecrypted的源码进行编译。 进入到dumpdecrypted文件夹下,运行make命令即可。 编译完成后,dumpdecrypted文件夹中就会多一个dumpdecrypted.dylib动态库,该动态库就是稍后我们砸壳使用的工具。 二、“砸壳”前的准备工作 接下来就是要在越狱手机上寻找要“砸壳”的app路径了,首先使用ssh连接到你的越狱设备,然后在越狱设备中打开你要砸壳的App, 此处我们以微信为例。从AippStore中下载安装的应用都会位于/var/mobile/Applications中,下方的截图就是我手机上从AppStore中下载的应用的安装路径。当然,下方是使用iExplore工具进行查看的,下方内容中,文件的拷贝我们都会用到iExplorer,当然你也可以使用之前提到过的iFunBox。 从上方的截图中要找出微信所在的目录是非常困难的,应用少的话你可以点开一个个的看。向上面这种应用比较多的情况的话,一个个文件夹点开是不太现实的,所以我们得通过另一种方式来定位“微信”App所在的目录。 这种快捷定位“微信”所在目录的方式就是“查看应用进程”的方式,首先你需要打开微信,然后运行下方的命令,来查看文件目录/var/mobile/目录下的所有正在运行的App进行,具体要用到的命令如下所示: ps -e | grep /var/mobile 上方截图就是上述命令运行后所输出的内容,从上述内容中我们轻而易举的就可以找到“WeChat”所在目录。我们可以通过iExplore打开该目录,更直观的来看一下微信App所在的目录,具体内容如下所示.上面这个进程的绝对路径我们要记下来,因为后边砸壳的时候会使用到该路径。 接下来我们就要使用Cycript工具来寻找WeChat的Document路径了,如果你的越狱设备上没有安装Cycript工具的话,那么请前往Cydia下载安装Cycript工具。下方步骤就是使用Cycript工具来查看附加进程的Document目录的步骤。 1.使用Cycript注入目标进程中 cycript -p WeChat 上述命令执行完毕后,会进入到cycript模式中,如下所示。当然,在iOS9.2.1上的越狱设备执行上述命令会报错,可能是目前Cycript这个强大的工具还不支持iOS9.2吧。所以我是在iOS7.2上做的该实验。 2.获取该进程的Document目录 [[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask][0] 输入上述内容,然后点击回车,就会输出WeChat进程的Document目录,输出结果如下所示。下方的红色部分就是WeChat的Document目录的绝对路径。 找到上述目录后,使用iExplore进入到该目录下,将上面我们生成的dumpdecripted.dylib动态库拷贝到该目录下即可,如下所示: 三、开始砸壳 上述“砸壳”的准备工作就绪后,接下来我们就要开始砸壳了。进入到WeChat的Document目录中,执行下方的命令进行砸壳。 DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Applications/3DC16044-E5BB-4038-9E31-CFE3C7134A7B/WeChat.app/WeChat 在上述命令中,DYLD_INSERT_LIBRARIES后边这个动态库就是我们上面生成的动态库,后边这个路径就是WeChat执行文件的绝对路径,运行上述命令后,就开始砸壳了,下方截图就是我们砸壳的过程。 砸壳过程完成后,会在我们的Document目录下生成一个WeChat.decrypted文件,如下截图所示。该文件就是脱壳后的文件,我们可以将该文件拷贝到我们的Mac上,以备使用。 四、导出脱壳App的头文件 将上面生成的WeChat.decrypted脱壳文件拷贝的我们的Mac上,接下来就是我们class-dump出厂的时刻了。接下来我们要使用class-dump导出该脱壳文件的所有头文件。具体步骤如下所示。 1.前奏 WeChat.decrypted文件后,我执行了下方的命令来导出其头文件,下方的命令在没有加壳的app中是好使的,直接就可以导出相应App的头文件,如下所示: class-dump -S -s -HWeChat.decrypted-o./Headers 执行上述命令结束后是下方这个结果, 并没有导出想要的头文件,Google了一下,是ARM的架构不对,所以就没导出成功。 2.开始导出头文件 从上述截图中我们可看到,Headers文件夹中并没有生成相应的头文件。是我们解密的文件有问题吗?于是乎,我使用了Hopper打开了解密后的文件,是可以正常打开的,于是乎又Google一下,原来是我们在导出头文件时指定的ARM架构不正确,于是乎使用class-dump的--arch配置项来指定了armv7的架构,这样的话,头文件就导出成功了。 class-dump--arch armv7-S -s -H WeChat.decrypted -o ./Headers 操作步骤和结果如下图所示, 导出成功,你可以慢慢的分析了。 五、Hopper 上面使用了class-dump来操作我们脱壳的文件,木有问题。那么接下来来看一下在Hopper上的效果如何,下方就是使用Hopper打开“脱壳”文件的效果。当然,你也可以使用IDA Pro来查看,当然此处我们使用的是Hopper。从下方的截图来看,结果是Perfect的。 本文转自zsdnr 51CTO博客,原文链接:http://blog.51cto.com/12942149/1929662,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册