首页
社区
课程
招聘
[原创]crakeme02过程
2015-1-23 04:48 1916

[原创]crakeme02过程

2015-1-23 04:48
1916
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 3003
活跃值: (464)
能力值: ( LV15,RANK:1395 )
在线值:
发帖
回帖
粉丝
lacoucou 12 2015-1-25 15:07
2
0
用动态方法调试:
第二题动态调试
1.从AndroidManifest.xml中获取信息其包名和主界面。
然后用下边的命令启动程序

adb shell am start -D -n com.yaotong.crackme/.MainActivity

2.用IDA附加进程,停下来之后在libc.so中的pthread_create上下断点

然后运行程序:
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
端口在DDMS中查看:


IDA中运行程序。
停在ONload中
接着运行 到了pthread_create 中 此时可以看到函数的参数R0-R2 R2中为线程回调函数

回调函数地址:0x47fc96a4,在这里下断点之后再次运行就会发现执行此函数后程序就退掉了,因此这里就是反调试的了。
下边要做的就是不让此函数执行。
重新来过到了pthread_create之后,查看其返回地址(LR寄存器)0x47fc9c5c
跳到此地址,是在OnLoad中,下好断点,重新来过



附加之后再次断在OnLoad中,直接运行,到了上图的断点处,修改PC到0x47fc9c5c
然后再次运行,程序主界面就出来了。

点击按钮之后,就停在了:

静态分析发现此函数中包含一个“wojiushidaan的字符串”,先去那里看看:



这个就是答案了。
具体算法不看了。
上传的附件:
游客
登录 | 注册 方可回帖
返回