fpga编写iic思路模拟器的思路 求助

用Python和Smali模拟器搞定一个加混淆、防篡改的APK逆向 - FreeBuf互联网安全新媒体平台 | 关注黑客与极客
用Python和Smali模拟器搞定一个加混淆、防篡改的APK逆向
共395752人围观
,发现 7 个不明物体
这个周末我和好友聊天时,他向我求助修改一个他正在编写Python脚本。他试图通过解混淆一个APK,来理解该APK的混淆基址和防篡改保护机制。同我以往的APK逆向过程(dex2jar-&jd-gui-&done)相比,这是一个很有挑战性同时充满趣味的工作。同时,这个逆向过程我编写了一个我认为比较酷比较独特的工具。
怪异的字符串
同其他有过APK反编译工作经验的逆向工作者一样,我已经很习惯程序中的类和名字被ProGuard混淆(或者被DexGuard混淆字符串等),这对我来说不是什么困难。但是当我使用apktool打开这个应用的时候还是大吃一惊:
大部分的类和方法名都是很怪异的字符串,这几乎没法让我使用一个单独的工具或者编辑器来查看这些文件。所以目前最首要的步骤就是修复(坦诚的说应该是从头开始写)Matteo写的python脚本,这个脚本试图重新命名所有的混淆入口,脚本本身工作流程比较简单:
遍历所有名称为不能打印字符的smali文件
使用ClassXXX替代混淆的类名字(XXX是一个自增的数字)
重命名文件
查找所有引用这些类的地方并使用新的名称替代(正则匹配)
在.field文件夹(类变量,方法等)中重复这个操作
这个过程结束之后,最终获得了一个可以浏览的文件夹和可读的smali文件:
但是这离完成还有很远的距离。
在我继续进行之前,我先需要指出两点,以便你能够理解我这么做背后的理由:
1.&这个应用使用了很奇怪的反篡改(很大可能是反调试之类的措施)保护,因此,使用注入代码的方式将smali代码重新打包成APK是不可行的,同样调试也是不行的
2.&这样的保护措施不仅阻止了代码注入/修改,同时也会在检测到这种篡改后卸载软件
所以代码注入(XPosed也不行)、调试都无法使用,基本我通常的标准逆向方式都无法使用。
加密字符串
作为一个懒惰(或者说是聪明)的逆向者,我不想先去理解其中的逻辑,相反,我试图发现那些能够给我一些提示的、有意义的字符串,帮助我发现这个app在做些什么,但是我再次被震惊到了。
所有的字符串都进过了传统的加密算法加密,基本上所有引用字符串的地方都被如下的方式进行了替换:
Stringdecrypted = Class623::method5( new int[]{ -12, 44, -35, … }, 52 );&
函数的参数仅仅是一个整形数组和其他的一些数字作为第二个参数(或许是某种形式的密钥?)
通常我遇到这种情况的做法是:
1.&反编译APK到Java(使用dex2jar+jd-gui或者仅仅是jadx)
2.&获取到解密的java代码,并将其粘贴到一个独立的java控制台
3.&对加密的东西执行解密例程从而获得明文结果
然而。。。任何工具都无法正确的将Class623::method5 的smali代码转换成
java代码,这些工具获得的输出都是无意义的东西,不起作用。但是目前我并不是很擅长阅读smali代码(这个解密程序本身也十分复杂,至少对我来说很复杂)…但是我不能就这么放弃。
所有的都让Smali模拟器来搞定吧
我当然可以利用Class623::method5的smali代码,创建一个新的安卓APP,然后使用apktool反编译,在这个方法的输出中注入代码,插入一个调用该函数代码的调用到app中,重新构建这个app并且运行它。但是:
1.&&同样,我是一个懒惰的人
2.& 这个实现方式并不优雅
3.&&我头脑里闪现出一个很酷的想法,我必须尝试一下!
长话短说,我要做的是:“写一个smali解析器和模拟器,然后加载这个函数例程,最终它将输出所有我需要的明文!”。
于是我开始阅读Dalvik操作码说明,整合了一些代码,经过几个小时,我完成了这个简单的pyhon 脚本用于测试:
from smali.emulator import Emulatoremu= Emulator()# The smali file to emulate.filename= 'decryptor.smali'& # Arguments for the method.args= {& &&& 'p0': (-62, -99, -106, -125, -123, -105, -98, -37, -105, -97, -103, -41, -118, -97, -113, -103, -109, -104, -115, 111, 98, 103, 35, 52),&&& 'p1': 19}ret= emu.run( filename, args )print emu.statsprint "RESULT:\n"& print "'%s'" % ret&
而且,运行结果如下:
我对所有的加密字符串执行该脚本,模拟器也能正确的解析和执行解密例程的smali代码,并解密所有我从反编译程序中抽取的每一个条目。从现在开始,所有的工作就是使用明文替换所有的加密条目,从而这个逆向过程易如反掌。&
*原文链接:,NoSecTec编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
必须您当前尚未登录。
必须(保密)
这家伙太懒,还未填写个人描述!
关注我们 分享每日精选文章
可以给我们打个分吗?查看: 4976|回复: 7
平民, 积分 32, 距离下一级还需 68 积分
精华0帖子威望0 点积分32 点注册时间最后登录
本人对灵魂黑客很感兴趣,特意去下载了PS模拟器,但是由于本人是第一次使用PS模拟器,所以不清楚如何安装中文补丁,想寻求帮助。
本人下载完中文补丁后,按提示,将压缩包里的SLPS_019.21.ppf和 SLPS_019.22.ppf这两个程序的后缀名.ppf去掉,改为SLPS_019.21和 SLPS_019.22以后,复制粘贴到模拟器的epsxe\patches目录下,可打开模拟器进入游戏后,游戏还是日文,是本人漏了什么步骤吗?还请指教。
另外,中文补丁中的pdx-pom3这个文件夹是派什么用的?是PSP用的还是跟PS模拟器有关呢?
还有,本人的模拟器是ePSXe1.7版本的,这有影响吗?
精华10帖子威望16 点积分10584 点注册时间最后登录
可打开模拟器进入游戏后,游戏还是日文
-------------------
是不是序幕的那几行字
那几行字是图片 改不了&&等对话框出现后看看是否还是日文才能决定
平民, 积分 32, 距离下一级还需 68 积分
精华0帖子威望0 点积分32 点注册时间最后登录
恩,去试过了,序幕过后确实是中文,但又出现了一个诡异的问题,那就是对话框中显示过的文字,在新的文字出现后并没有全部消失,比如原本显示了10个字的对话,之后新的对话是5个子,新的5个字取代了旧的5个字,但原有的多出来的5个子并没有消失,请问这是什么问题?尽管现在游戏应该可以运行了,但这样看起来毕竟不舒服,还请指教。
是不是因为SLPS_019.21.ppf和 SLPS_019.22.ppf这两个程序的后缀名只要去掉其中的一个就可以了?
还是本人使用的模拟器版本有问题?
战士, 积分 805, 距离下一级还需 695 积分
精华2帖子威望2 点积分806 点注册时间最后登录
本帖最后由 windsky_z 于
08:17 编辑
crowcrowcrow 发表于
恩,去试过了,序幕过后确实是中文,但又出现了一个诡异的问题,那就是对话框中显示过的文字,在新的文字出 ...
印象中记得当时就有坛友说过这问题,在电脑上模拟玩的话可以通过变更模拟器的视频插件来解决,如果psp上模拟的话只有部分界面存在类似问题(对话文字是正常的),从个人通关几遍看影响基本没有。
补丁在pc上就按作者提示做。
精华10帖子威望16 点积分10584 点注册时间最后登录
本帖最后由 monkeyking 于
08:53 编辑
crowcrowcrow 发表于
恩,去试过了,序幕过后确实是中文,但又出现了一个诡异的问题,那就是对话框中显示过的文字,在新的文字出 ...
这个换视频插件即可
在模拟器的视频设置里选择不同的插件
比如Pete 的 D3D 驱动 1.76(电脑配置如果好就选这个 把卷面加强开到最高)
或者Pete's Soft Driver 1.54(电脑配置如果一般就选这个万用插件 画质次一些)
另外模拟器帧数一般默认是100 过快&&记得改为70(使用帧数限制要打钩)
可以自己试验开到最好效果
这是一个范例:
此外玩黑客的话建议用epsxe1.6& &
1.7无法解决战斗里的爆音问题&&1.6则只需要关掉“开启XA音轨”的打钩即可
精华10帖子威望16 点积分10584 点注册时间最后登录
crowcrowcrow 发表于
恩,去试过了,序幕过后确实是中文,但又出现了一个诡异的问题,那就是对话框中显示过的文字,在新的文字出 ...
因为SLPS_019.21.ppf和 SLPS_019.22.ppf这两个程序的后缀名只要去掉其中的一个就可以了
-------------------------
不是 模拟器玩的话两个都要去掉& &因为是对应黑客的两张盘
显示和这个无关
平民, 积分 32, 距离下一级还需 68 积分
精华0帖子威望0 点积分32 点注册时间最后登录
谢谢,已经可以玩了,不过本人还有些小问题,个人觉得,这个游戏在迷宫中打开菜单以及进入战斗的速度似乎挺慢,感觉像读盘时间很长一样,不知是因为本人没选择合适的插件还是游戏本来就这样?
精华10帖子威望16 点积分10584 点注册时间最后登录
本帖最后由 monkeyking 于
00:12 编辑
crowcrowcrow 发表于
谢谢,已经可以玩了,不过本人还有些小问题,个人觉得,这个游戏在迷宫中打开菜单以及进入战斗的速度似乎挺 ...
是因为本来就慢(PS版时候在主机上玩就很慢)
可以在帧数设置里适当提高速度(比如帧数+5试试看)&&不过最好不要超过80, 不然一个是音乐走调另一个指令也容易出错
战斗画面可以在菜单里关闭&&那样一战就很快了
Powered by
扫描二维码
下载 A9VG 客户端(iOS, Android)||||||||||||||||||
查看: 369432|回复: 596
在线时间2292 小时经验值1580 最后登录注册时间帖子阅读权限80UID190261
研究生, 积分 1580, 距离下一级还需 120 积分
该用户从未签到
G币882 最后登录注册时间
本帖最后由 cccyyynnn 于
11:54 编辑
gameboid升级之后支持了金手指功能,可是这个功能用起来实在是一波三折,相信很多人都遇到了这样那样的问题。经过一下午的摸索,我成功的运行了金手指,下面我就把我的心得贴出来。如果我的帖子对你有帮助,记得评分哦~
一、首先是需要下载的软件
1、金手指代码转换软件。去掉apk直接使用。因为gba模拟器支持的金手指格式和一般的不一样,需要转换,因此转换软件必不可少,有些杀毒软件会报毒,但是请放心,绝对没有问题。
(217.5 KB)
21:14 上传
点击文件名下载附件
2、gba模拟器。有些同学的模拟器在使用金手指时会有异常退出的情况,于是我找到了这个版本的gba模拟器(谢谢kurapicak2同学的)。可以使用金手指而不出任何问题。如果你的模拟器本来没有问题,则不需要下载
(516.25 KB)
21:14 上传
点击文件名下载附件
二、下面就是正式教程了
1、这是我在光明之魂二贴吧找到的金手指
光明之魂2常用金手指代码合集
 火抗性100
2、接下来我们打开代码转换器,填上代码,注意,冒号后面不足八位的要用“0”补足八位,否则转换失败。例如:变为000064
注意画红框部分的设置。
21:27 上传
3、然后我们在gba模拟器里输入代码,输入完之后按确定
21:32 上传
4、大功告成,尽情享受吧~
三、额外课程~
如果看到这样的金手指描述
字节 技能点
那我们该怎么应用呢?很简单
02003C28:xx
其中xx就是您想修改的数值
(注意是这里是16进制,我们需要把我们想要的数值转化为16进制,例如100转化为16进制就是64,大家可以google一下,有很多工具)
然后我们就需要补0了,就是变为
这就是我们需要转化的金手指代码了。
另外我们需要注意的是 “2字节”这个描述:两字节的意思就是转化为16进制之后,不能超过两位,例如刚才的例子,我们不能这么写:
因为100是三位数
四、结课~如果有问题可以跟帖喜欢或者有帮助可以评分哦~感谢Shallfe感同学的补充Shallfe
我发现问题了 ,我参考了 这一篇文章
原来你给的方法一般是对应8位的修改的,所以只读取后面最后两位XX的数值
如果对应十六位代码 如00XXXX的话 要把首位0改成1 成为00XXXX 再转换就可以了&&同理32位的要把0改成2
<p id="rate_4536" onmouseover="showTip(this)" tip="学会了!&经验值 + 1
" class="mtn mbn">
<p id="rate_5785" onmouseover="showTip(this)" tip="好,试试~~~~~~~~~&经验值 + 2
" class="mtn mbn">
<p id="rate_1457" onmouseover="showTip(this)" tip="DDDDDDDDDDDDDDDDDDDDDDDDDDD&经验值 + 1
" class="mtn mbn">
<p id="rate_6743" onmouseover="showTip(this)" tip="good&经验值 + 1
" class="mtn mbn">
<p id="rate_6284" onmouseover="showTip(this)" tip="感谢楼主这个我爱&经验值 + 1
" class="mtn mbn">
<p id="rate_9496" onmouseover="showTip(this)" tip="给力&经验值 + 1
" class="mtn mbn">
<p id="rate_3623" onmouseover="showTip(this)" tip="找很久了!谢谢!&经验值 + 1
" class="mtn mbn">
<p id="rate_6625" onmouseover="showTip(this)" tip="good&经验值 + 1
" class="mtn mbn">
<p id="rate_7578" onmouseover="showTip(this)" tip="评分 最光荣!&经验值 + 1
" class="mtn mbn">
<p id="rate_925" onmouseover="showTip(this)" tip="找了很久了!!感谢&经验值 + 1
" class="mtn mbn">
<p id="rate_4728" onmouseover="showTip(this)" tip="灰常感谢!!&经验值 + 1
" class="mtn mbn">
<p id="rate_6141" onmouseover="showTip(this)" tip="谢谢&经验值 + 1
" class="mtn mbn">
<p id="rate_5405" onmouseover="showTip(this)" tip="很感谢你!& + 1
" class="mtn mbn">
<p id="rate_881" onmouseover="showTip(this)" tip="找的就是这个& + 1
" class="mtn mbn">
<p id="rate_1419" onmouseover="showTip(this)" tip="火火火火火火火& + 1
" class="mtn mbn">
在线时间1 小时经验值8 最后登录注册时间帖子阅读权限10UID1710677
幼儿园, 积分 8, 距离下一级还需 7 积分
该用户从未签到
G币7 最后登录注册时间
哟西!!!!!!!!!!
在线时间2 小时经验值16 最后登录注册时间帖子阅读权限20UID1715434
小学生, 积分 11, 距离下一级还需 39 积分
该用户从未签到
G币0 最后登录注册时间
顶一下顶一下顶一下顶一下
在线时间447 小时经验值301 最后登录注册时间帖子阅读权限50UID708100
大学专科, 积分 301, 距离下一级还需 99 积分
该用户从未签到
G币320 最后登录注册时间
今天刚好在找
在线时间86 小时经验值83 最后登录注册时间帖子阅读权限30UID1277616
初中生, 积分 83, 距离下一级还需 17 积分
该用户从未签到
G币50 最后登录注册时间
樓主…我下了轉換文件重命名刪了akp還是打開不了。
在线时间23 小时经验值35 最后登录注册时间帖子阅读权限20UID1698426
小学生, 积分 35, 距离下一级还需 15 积分
TA的每日心情奋斗 14:57签到天数: 1 天[LV.1]初来乍到
G币5 最后登录注册时间
今天刚好在找
在线时间23 小时经验值35 最后登录注册时间帖子阅读权限20UID1698426
小学生, 积分 35, 距离下一级还需 15 积分
TA的每日心情奋斗 14:57签到天数: 1 天[LV.1]初来乍到
G币5 最后登录注册时间
顶一下顶一下
在线时间599 小时经验值332 最后登录注册时间帖子阅读权限50UID152587
大学专科, 积分 332, 距离下一级还需 68 积分
该用户从未签到
G币142 最后登录注册时间
自持啊&&自持啊& & 自大
在线时间11 小时经验值6 最后登录注册时间帖子阅读权限10UID1004488
幼儿园, 积分 6, 距离下一级还需 9 积分
该用户从未签到
G币3 最后登录注册时间
啊啊啊啊啊啊
在线时间0 小时经验值0 最后登录注册时间帖子阅读权限10UID795803
幼儿园, 积分 0, 距离下一级还需 15 积分
该用户从未签到
G币0 最后登录注册时间
下载还要钱,没诚意
浏览过的版块
Powered by什么叫GBA模拟器?干嘛用的?_百度知道
什么叫GBA模拟器?干嘛用的?
老看别人说手机要下载个GBA模拟器,这是什么东东?干嘛用的
我有更好的答案
手机来玩游戏的、GBA、PSP···那些游戏能在手机上玩的,要的话找我,下载个相关的模拟器、GBA等等模拟器。网址我有,有PSP、街机,能玩相关的游戏例如街机
模拟器就是利用软件模拟某一部游戏机(还有手机,电脑等)的运作环境,通过软件的调试让手机的性能尽可能接近游戏机的性能,从而能读取运行为该游戏机设计的游戏/
玩游戏用的。就是手机必须下载这个才能玩某种特定类型的游戏。
为您推荐:
其他类似问题
gba模拟器的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【求助】如何让接码平台的验证码自动输入到安卓模拟器的编辑框中 _ 综合讨论 - 按键精灵论坛
软件版本:2014.05软件大小:21.6M更新时间:07-04
软件版本:3.2.9软件大小:62.5M更新时间:12-07
软件版本:1.3.1软件大小:29.2M更新时间:09-29
软件版本:1.1.0软件大小:12.3M更新时间:12-29
查看: 1692|回复: 5
(20.03 K) 22:28:13(8.30 K) 22:28:13如题。我这边是打算写一个游戏的注册脚本,我是0基础,而且就看了最基础的那几个视频就开始写脚本了,我大概的思路已经写得差不多了,就是最难的一个问题是如何让接码平台的验证码自动输入到安卓模拟器的编辑框中去?【这个游戏不能用复制黏贴的方法】。求大神帮忙,感谢
qqa1 最后编辑于
没有人来帮忙吗
求大神帮忙看看
这是哪里错了吗?为什么运行不了FindPic 0,0,,&E:\1.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 ThenMoveTo intX, intY
LeftClick 1
MoveTo intX, intY
FindPic 0,0,,&E:\2.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then
LeftClick 1
End IfDelay 500FindPic 0,0,,&E:\4.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 ThenMoveTo intX, intY
RightClick 1
MoveR 609, 658
LeftClick 1
End IfDelay 500FindPic 0,0,,&E:\3.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then
MoveTo intX, intYLeftClick 1
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1
End IfDelay 500FindPic 0,0,,&E:\5.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 ThenMoveTo intX, intY
LeftClick 1Delay 500MoveTo 352, 645RightClick 1MoveR 371, 690LeftClick 1
End IfDelay 500FindPic 0,0,,&E:\8.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 ThenMoveTo intX, intY
LeftClick 1
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1
End IfDelay 500FindPic 0,0,,&E:\6.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 ThenMoveR intX, intY
LeftClick 1
SayString &www147&End IfDelay 500FindPic 0,0,,&E:\7.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 ThenMoveTo intX, intY
LeftClick 1End IfDelay 30000
回复 没反应还是什么如果是部分代码没反应可以调试下intx的值,看下是否找到图
回复 请问大哥
如何调用API写代码
回复 感谢大哥
闽网文 (-037号}

我要回帖

更多关于 教材编写思路 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信