安卓逆向题解
Android逆向小菜鸡
这个作者很懒,什么都没留下…
展开
-
Android逆向题解-攻防世界-Ph0en1x-100
主要代码是if 那个判断,getFlag取字符串用getSecret加密,和输入字符串encrypt加密后再getSecret加密,进行比较,两边同样都是getSecret加密,那比较可以简化成this.getFlag() == this.encrypt(s)。也就是输入字符经过encrypt加密后等于getFlag的字符串即可。直接上objection 获取到getFlag的返回值:ek。qanqntfg^E`hq|,每个字符+1;ida看下encrypt 的实现。原创 2024-08-20 15:40:06 · 631 阅读 · 0 评论 -
Android逆向题解-攻防世界easyso
还原过程就是指定的字符串“f72c5a36569418a20907b55be5bf95ad”先单双位互换得到“7fc2a5636549812a90705bb55efb59da”直接反编译看伪代码,代码比较简单直接手撕即可,循环走一两遍就可以知道整个逻辑了。然后单双位互换,0,1互换,2,3互换,4,5互换。核心逻辑都在so里面的CheckString函数。整理逻辑流程就是输入字符串前16位与后16位互换。然后前16位与后16位互换得到。最后与指定字符串比较。原创 2024-08-19 22:50:02 · 373 阅读 · 0 评论 -
Android逆向题解-攻防世界app2
最后指令启动界面就ok。又是一个花里胡哨的题。原创 2024-08-16 17:57:59 · 222 阅读 · 0 评论 -
Android逆向题解-Illusion-难度6
注意这里有一个陷阱,CheckFlag有静态注册函数和动态注册函数,会执行动态注册的函数。s 是用户输入,s1 是加密后flag: Ku@'G_V9v(yGS。sub_1028 看着花里胡哨的,实际执行结果就是 a1/a2;代码可以直接复制到idea,调试跟着过一遍就清楚了。传入Native函数 CheckFlag。a2 == 93 只会走sub_1028。原创 2024-08-15 22:33:01 · 306 阅读 · 0 评论 -
Android逆向题解攻防世界-RememberOther
userName MD5之后每2位取一个值与sn比较,userName 和 sn 都是用户输入类似注册机,这和flag不沾边。直接跳过看后续成功之后是Toast打印 “md5:b3241668ecbeb19921fdac5ac1aafa69”最后flag是 YOU_KNOW_ANDROID。原创 2024-08-14 11:40:16 · 189 阅读 · 0 评论 -
Android逆向题解攻防世界-easy-apk
魔改码表与标准码表参照对比,将加密字符串还原成标准码表编码的字符串,再标准base64解码即可。运行结果:flag{05397c42f9b6da593a3644162d36eb01}题目比较简单,就是一个改了码表的base64编码。原创 2024-08-14 11:20:14 · 486 阅读 · 0 评论 -
Android逆向题解攻防世界-easyjava-难度6
纯Java实现,不涉及so, flag加密之后与指定字符串 “wigwrkaugala"比较判断,循环一个个字符加的,那可以一个个字符对应还原。jeb自动把b.b解密成“abcdefghijklmnopqrstuvwxyz”,而b.b 运行中是会变化的。另外a,b类里面有静态变量,遍历完一次需要重置恢复到初始值不然加密结果不对。加密算法就在a,b类里面,代码直接复制到idea ,枚举暴力破解。类a,b 执行过程中是变化的,执行不同次数结果是不一样的。a,b 类直接复制就行,没什么需要改的。原创 2024-08-13 18:22:50 · 250 阅读 · 0 评论 -
Android逆向题解-boomshakalaka-3-难度5
题目要求是玩游戏得到最高分就可以得到flag,是写到配置文件的,初始flag值看着是base编码的。玩几次之后查看配置文件数据base64解码可以看到出现了部分flag,对比上面的代码补齐字段;题目描述:play the game, get the highest score。核心代码在so里面的ControlLayer::updateScore函数。这个app 是一个cocos游戏,没有用脚本实现,纯c++实现。逻辑就是根据玩游戏的得分拼接上面函数里面的的字符串;base64解码就出来了。原创 2024-08-12 23:44:25 · 287 阅读 · 0 评论 -
Android逆向题解 攻防世界-人民的名义-抓捕赵德汉1-200
就是一个md5加密,密文判断是否等于"fa3733c647dca53a66cf8df953c2d539",找一个MD5在线解密的解一下就出来了结果就是:“monkey99”这个也是一个简单题,文件是一个jar,直接丢到jeb反编译。原创 2024-08-12 10:01:20 · 196 阅读 · 0 评论 -
Android逆向题解 攻防世界难度5- APK逆向
一眼就能看出来,没啥难度,这个难度还不如上一个难度4的题。运行结果:bc72f242a6af3857。原创 2024-08-11 22:55:19 · 195 阅读 · 0 评论 -
Android逆向题解 攻防世界难度4- Android2.0
注意这里的v5 不是上面计算出来的第一段的值,是上面异或之后的也就是“LN^dl” ,输出字符串也就是flag 长度是15,然后分成三段,第一段是可以整除3,第二段是除3取余=1,第三段是除3取余等于2;第二段:l{sra -------------除3余1,对应下标就是1,4,7,10,13。第一段:fgorl -------------整除3,对应的下标就是0,3,6,9,12。第三段:asoy} -------------除3余2,对应下标就是2,5,8,11,14。原创 2024-08-10 17:57:50 · 566 阅读 · 0 评论 -
Android逆向题解6-黑客精神
看代码是要先注册,先调doRegister注册,判断已注册再调workdoRegister跳到RegActivity输入内容传到saveSNsaveSN是个native方法,这里还看到了work也是native方法,就是核心代码都在so里下面来分析so直接看导出函数没找到saveSN和work,那应该是动态注册的直接看JNI_OnLoad,确实是动态注册的,n1就是initSN,n2是...原创 2020-04-12 15:46:19 · 716 阅读 · 0 评论 -
Android逆向题解5-HackMeNative
看雪上看到的一个https://bbs.pediy.com/thread-255468.htm运行界面代码分析public class MainActivity extends Activity implements View$OnClickListener { EditText answerText; Button submitButton; public...原创 2020-04-12 15:31:35 · 317 阅读 · 0 评论 -
Android逆向题解4-EasyJni
运行界面:找flag,用户输入一串字符串点击cheek确认输入是否正确代码分析判断用户输入字符串是否正确先用一个a方法加密之后传入native函数ncheck进行判定;也就是在Java层有一次加密,在native层还有一次加密;Java层的加密,类似一个换了码表的base64加密;package com.a.easyjni; public class a { priva...原创 2020-04-12 15:19:27 · 358 阅读 · 0 评论 -
Android逆向题解3-DDCTF-Normal
赛题背景:本挑战结合了Android, Java, C/C++,加密算法等知识点,考察了挑战者的binary逆向技术和加密算法能力。赛题描述:本题是一个app,请试分析app中隐藏的key,逆向加密算法并得到对应的秘钥。可以在app中尝试输入key,如果正确会显示“correct”,如果错误会显示“Wrong”。提 示:阅读assembly code,理解xor的加密逻辑和参数,解出答案。...原创 2020-04-12 15:12:26 · 332 阅读 · 0 评论 -
Android逆向题解2-bobbydylan
List item运行界面List item代码分析:调用check方法,传入参数是获取用户是输入,抛出异常就“错误”public void onClick(View arg5) { DialogInterface$OnClickListener v3 = null; try { this.b.check(this.a.get...原创 2020-04-12 15:05:59 · 255 阅读 · 0 评论 -
Android逆向题解1-app1
这个很简单,就是拿versionName和versionName进行异或操作就可以了,versionName和versionName在AM里面设置;protected void onCreate(Bundle arg3) { super.onCreate(arg3); this.setContentView(0x7F04001B); this.bt...原创 2020-04-12 14:59:15 · 383 阅读 · 0 评论