反编译遇到360混淆怎么办
㈠ 反编译的java源码,里面全是abcdef的类名和包名,如何解决
我没有看见那一个工具能够强大到原来的名称都给你找回来的。
反编译工具如果都这么强悍的话,那别人的编程代码还有什么秘密可言
㈡ Android 反编译之后的源代码类名被混淆了,类名变为a-z毫无意义的名字,有什么办法可以找到原始的类名吗
没办法 就是这样 不然源代码随便改 就乱了
㈢ 经过360加固的安卓程序该如何破解反编译后什么代码都找不到
1)APKtool 2)dex2jar 3)jd-gui 4)签名工具 相关技术的基本要求 1)具有一定的阅读JAVA代码的能力 2)稍微有点Android基础,越多越好 3)会用eclipse的一些Android调试的相关工具 4)了解一下smali的语法规范和字段的自定范围 5)有点应变能力思想转换能力、 6)虽然代码的修改是修改其smali文件(用到smali语法),虽然其语言是非常复杂的,但是我们能够变通就行了,但是要求了解一下smali的语法规范和字段的自定范围。 了解以上方法可以非常简单破解Android APK,破解后,应用里的页面布局、代码逻辑、结构算法等都能一目了然。所以为了避免被他人,尤其是竞争对手了解到这些,防破解和反编译尤为重要。我试过代码混淆,但是代码混淆只是对类名进行了变换,增加了破解者的阅读难度,并不能真正阻止反编译工程。下面是进行过代码混淆的APK代码结构,能看到只是对类名做了变换,变成a、b、c等这样的名称。但是仍然可以进行反编译。 后来又尝试使用360加固保对APK进行加固保护,发现原有的代码程序被隐藏起来了,没法再进行反编译工作。 所以作为移动应用开发者,适当了解一些破解和反编译工作有利于保护自己的应用安全。如果不防患于未然,一旦出现盗版情况,那么你的APP很可能从此被市场所抛弃。
㈣ 安卓app360加固怎么反编译
1 对比
上传demo进行加固,解包后对比下原包和加固包,发现加固包在assets文件夹下多了libjiagu.so,libjiagu_x86,lib文件夹下多了libjiagu_art.so,同时修改了dex文件和AndroidManifest文件
打开manifest文件,看到xxx加固对Application标签做了修改,添加了壳入口,也就是我们反编译后看到的StubApplication.smali这个文件。
相比于之前版本的加固,自从1.x.x.x加固版本之后,多了几次反调试,使得动态难度稍微增大了一些,不过针对脱壳机脱壳,再多了反调试也是无用。或者通过修改系统源码,也能达到消除反调试的作用。
2 动态调试
(1)把app安装到手机,以调试模式打开app
(2)以shell模式root权限打开IDA的android_server监听
(3)tcp转发
(4)打开IDA,修改配置为在进程开始时下断
(5)搜索到进程后jdwp转发,pid值即为我们进程号,并在命令行下附加。
成功附加后,可以下段了,打开Debugger Option
我们选择在线程开始和库加载时下断,修改成功后,jdb附加,点击运行
程序会断在elf头处,按下G键,搜索mmap,在mmap函数的段首和断尾下段
F9运行,来到断尾时F8单步,
来到此处时,在 BLunk_5C999C2C下断,F9一下,F7跟进去
跟进去今后在BLX LR处进行下断,此处就是进行反调试的地方,原理依然是获取TracePid的值判断当前是不是处于调试状态,建议第一次调试的人在fgets和fopen处下断,再f7跟进此调用就可以看到TracePid的值了。
跟进去之后,我们直接把方法移到最下方,就可以看到kill符号了,这就是杀进程的地方,如果当前处于调试状态,则直接结束进程。
我们在此函数的所有cmpR0,#0处下断,F9一下后即断在断点处,观察寄存器窗口的R0值,实质就是当前的TracePid的16进制的值
不确定的可以使用cat /proc/pid/status进行对比一下,我们直接把R0置0,右键选择Zero Value即可清0,继续F9
我们看到程序又来到了mmap处,继续f9
当继续断在调用反调试功能的方法时,继续F7跟进,依然在所有的cmp R0,#0处下断,断下后把R0清0后继续F9运行
目前的规律是,调用BLXLR的第一次,第二次和第四次是进行反调试判断的,第三次并不影响,可以直接f9跳过去,三次反调试搞定后,就可以愉快的F9运行并观察堆栈窗口了
当看到出现如下所示时:
说明壳已经开始解密并释放dex文件了,我们直接F8单步十几步,最后F9一下就可以看到我们需要的dex头了
直接脚本mp出来即可,最后把libjiagu的所有文件删除,并修复下Application标,如果存在则修复,不存在删除即可
㈤ 被混淆的jar包如何反编译
暂时想到的只有将jar文件解压,用反编译工具反编译相关类,修改,编译成类替换原文件,再打包成。
㈥ 对已经混淆的Android代码,如何进行反编译
android代码混淆是指安卓开发者或者组织为了防止自己的产品敏感信息或者技术机密被人破解,而在生成apk文件的时候,通过设置一些替换规则,使java文件中指定的代码类的名字或者成员名字变为没有任何意义的字母,然后编译成class文件的过程。
已经混淆过的android代码反编译出来的都是一些没有任何意义的名字,是很难读懂的。没有好的办法。
㈦ 怎么反编译360net.dll
反编译.net dll
自己公司的程序,年代久了,没有源代码,修改一些小地方,只能反编译,还好当时没有混淆。
先ildasm 反编译。
删除 .publickey = ( ) 这段,去原来签名。
然后再用找要改的IL,这个看IL的水平了,这些以前都弄过,不过自己程序有pfx签名,cs的在vs上关联下编译的时候自动弄。
一直不知道ilasm怎么弄,网上介绍的都是老的snk签名法,和含有cer的pfx签名。
终于在网上找到了
http://ianpicknell.blogspot.com/2009/12/adding-strong-name-to-third-party.html
SN -p MyCertificate.pfx MyCertificate-publickey.snk
ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyCertificate-publickey.snk
SN -R ASQLService.dll MyCertificate.pfx
大致是先把pfx签一个公钥的snk,然后生成dll,最后签入原来key
改好后用ILSPY或者Reflector看看。
--------------------------------------------------------------------------------------------------------
Reflector的reflexil 1.6的时候改了,保存后有时候运行不起来。方便成cs的再编译还要引用一堆dll有点烦~还是il编译好,一个文件搞定也不用引用什么。
㈧ APK急需反编译,但是APK已经被混淆了,怎么破
a. 获取 .dex 后缀文件 : 修改 apk 文件后缀, 获取 class.dex 文件;
b. 执行反编译 : 将 classes.dex 拷贝到 dex2jar 目录下, 执行 ./d2j-dex2jar.sh classes.dex 命令;
-- 执行结果 :
octopus@octopus:~/decompiler/linux/dex2jar-0.0.9.15$ ./d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
c. jd-gui 中查看源码
: 将 classes-dex2jar.jar 文件拖入 jd-gui 中, 查看源码;
㈨ 混淆的class文件怎么进行反编译
一般情况下Java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。
从研究的角度,浅析如何读懂这种反编译过来的文件。
例子一:赋值
反编译过来的代码如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始语句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
注解:
JVM INSTR swap ; //赋值语句
练习:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;
例子二:不带参数创建对象
反编译过来的代码如下:
JVM INSTR new #244 ;
JVM INSTR p ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始语句:
CrossTable crosstable = new CrossTable();
注解:
练习:
JVM INSTR new #246 ;
JVM INSTR p ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:带参数创建对象
反编译过来的代码如下:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;
原始语句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
注解:
此语句实际上是:s2 += s.substring(j, i) + s6;
练习:
例子四:for循环
反编译过来的代码如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始语句:
for(int k=0;k < as.length;k++)
{
...
}
注解:
例子五:while循环
反编译过来的代码如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始语句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}
㈩ SWF AS3 反编译问题,代码被混淆,变量名非法,我更改后不抱错,输出也不报错,刚学AS3,请高手帮忙修改下
请求地址异常,能否把问题再说清楚点,或者用其他办法上传代码