资安学习路上-picoCTF 解题(Reverse)1

Reverse

1.Transformation:考unicode


载下来的档案,看起来编码错误

用unicode线上编辑器转成16进制

再丢进来从16进制转到ASCII

2.ARMssembly 0

IDA pro

搜寻IDA pro后载想要安装版本,这边用linux

chmod +x idafree77_linux.run  #要先修改权限,再执行sudo ./idafree77_linux.runsudo ln -s /opt/idafree-7.7/ida64 /usr/bin #建立实体连结ida64 #执行

结果发现档案格式不对,只能硬干惹

PE是微软的一种执行档的资料形式 不是副档名
直接看fun1后知道是比大小,输出较大的数

再把比较大的数变成16进位得到flag

ARM

暂存器

SP, the Stack Pointer,R13:用来当作active stack的指标
LR, the Link Register,R14:用来当存子程式的return address

运算

add:加,如:add r1, r2 ==>r1 = r1 + r2
add r1, r2, #1 ==>r1 = r2 + 1
sub:减,如:sub r1, r2==>r1 = r1 - r2
sub r1, r2, #1 ==>r1 = r2 - 1

CMP:比较,比较方式也是同sub,用减的来比较,但不影响减数及被减数。
LDR(load (to) Register):从记忆体位址载入资料到单一暂存器,
如:LDR R1, [R0] #R1 = *R0,从位址 R0 载入到 R1暂存器
LDR R0, [R1], #8 // R0 = *R1 then R1 = R1 + 8
STR(store (from) Register):从单一暂存器的值存回记忆体,
如:STR R1, [R0] # *R0 = R1, 把 R1 暂存器写到位址 R0
STR R0, [R1], #-8 // *R1 = R0 then R1 = R1 - 8

bls:Branch if Lower or the Same,当小于等于时,跳转(jump)
b :b addr L ==> pc = addr无条件跳转。

3.keygenme-py

看一下程式码,很明显这有flag,但有缺

循着 "key_full_template_trial"搜寻,看到这段很可疑,一看就知道是上面的XXXX

跑一下程式后就找到flag的一部分,加上原本的就解完啦


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章