问题出在这里:目前我的团队为供应商工作,他们从他们的库中提供了一个巨大的JavaDoc规范,但没有为.jar文件提供存根或实现.
我们已经与他们交谈,但他们将在2到3周内提供.jar文件.我不想等待这个时间来开始我们的开发,所以这里的问题是:
仅提供JavaDoc .html文件,是否有任何工具(免费/开源)可用,因此我们可以创建一个.jar(或一堆.java/.class文件),使我们能够编译我们的代码?
对于我的应用程序的付费版本,我选择了解锁程序应用程序路由,因为它易于实现,允许开发人员控制台中的各个统计信息,但主要是因为我不需要维护2个代码库(一个用于免费版本和另一个付费版本).即使我使用CVS(我这样做),仍然需要保持合并功能和错误修复.解锁器应用程序更容易实现整体...
但这有一个严重的缺点,它很容易超出安全检查; 除非我在这里遗漏了什么.
无论我做什么,这样的实现总会导致一个简单的if,像这样:
if(Program.isPremiumVersion()) {
// Remove ads...
}
Run Code Online (Sandbox Code Playgroud)
该isPremiumVersion()方法负责检查付费解锁器应用程序安装的所有工作,如果证书匹配和所有这些东西.是的,解锁器应用程序受LVL保护(虽然我已经阅读了一些提到LVL不安全的文章,但现在不是重点).但最终,无论内部代码有多复杂isPremiumVersion(),它总会导致返回一个true或false值.
覆盖这样的安全功能只需要对代码进行逆向工程并使其始终返回true.不是吗?我们如何保护我们的Android应用免受此攻击?是的,代码使用ProGuard进行混淆.不过,对于足够熟练的人来说,不应该太难.
请注意,我不是在试图打击破解者,我们根本无法获胜.我不会为此而失眠,在"完美解决方案"上浪费了无数个小时.我只是在寻找一种让它更安全的方法.至少在理论上,这似乎很容易破解.我错了吗?
有什么想法可以提高这种功能的安全性吗?
我正在尝试对作者早已不复存在的程序进行反汇编和反向工程.该程序提供了一些我在其他地方尚未找到的独特功能......我对程序的逆向工程感到好奇和好奇.如果你要尝试帮助我找到另一个程序......不要打扰.
我使用的是IDA Pro的瓦特/六角射线反编译得到一些中途体面的伪代码,试图加快逆向工程.我认为有助于加速事情的一件大事就是找出字符串的含义.到目前为止,这是我发现的超过4个字符的字符串:
dword_131894E = 54264588;
dword_131894A = 51381002;
dword_1318946 = 51380998;
dword_1318942 = 52429571;
dword_131893E = 52298503;
runtimeVersion[0] = 836;
szIndex = 0;
do
{
runtimeVersion[szIndex] = (runtimeVersion[szIndex] - 1) ^ (szIndex + 882) ^ 0x47;
++szIndex;
}
while ( szIndex < 11 );
Run Code Online (Sandbox Code Playgroud)
从查看三个字符的字符串的类似伪代码,并使用Hex-Rays悬停类型信息,这是我如何理解这一点:
除了每个字符串的常量"882"不同之外,上述伪代码对于所有大字符串都是相同的.我假设这是一种编译时加密或宏,它逐个查找字符串并"唯一地"加密它们.但问题是,我似乎无法通过复制伪代码获得正确的字符串.这是我在C#中所拥有的:
ushort[] newCharArray = new ushort[rawCharacters.Length];
// Go through and decode all of the characters.
ushort i = 0;
do {
newCharArray[i] = (ushort)((i + 882) ^ (rawCharacters[i] …Run Code Online (Sandbox Code Playgroud) 我正试图从Android手机上的应用程序捕获流量,虽然我已经在手机上设置代理并且可以捕获来自手机的所有其他互联网流量(使用Charles Proxy),但是我看不到任何流量这个应用程序.
这是如何完成的,如何捕获流量?
更新:
如果您需要有关从计算机设置wifi热点的帮助,那么您可以将手机连接到它并使用Wireshark流量,只需查看以下链接以获取指示:http:
//www.wi-fiplanet.com/tutorials/article .PHP/3849841 /如何到创建-无线托管,网络功能于Windows的7.htm
如果您需要帮助将IOS应用程序反编译为汇编,请查看以下
链接:http://www.infointox.net/?tag = arm
如果你想要一个比dex2jar更好的Dex to Java反编译器,请查看:https://github.com/skylot/jadx
我正在逆向工程AC遥控器.当我发送温度值(从17C到30C)时,我得到以下流.
Temperature - Binary - Hex - Decimal
17C - 00000000 - 0x00 - 0
18C - 00010000 - 0x10 - 16
19C - 00110000 - 0x30 - 48
20C - 00100000 - 0x20 - 32
21C - 01100000 - 0x60 - 96
22C - 01110000 - 0x70 - 112
23C - 01010000 - 0x50 - 80
24C - 01000000 - 0x40 - 64
25C - 11000000 - 0xc0 - 192
26C - 11010000 - 0xd0 - 208
27C - …Run Code Online (Sandbox Code Playgroud) 非常感谢Abhas Tandon通过使用提出这一点
$(this).trigger('click');
Run Code Online (Sandbox Code Playgroud)
代替
$(this).addClass('selected');
Run Code Online (Sandbox Code Playgroud)
它会正确选择图像.我测试了一个由21个图像组成的板,它工作得很完美!但是,当试图移动300多个引脚时,它失败并出现此错误:
"You can only move 50 Pins at a time."
Run Code Online (Sandbox Code Playgroud)
然后,我通过使用JavaScript的slice()函数来获取前50个图像,从而解决了这个问题.经过测试,现在可以正常使用.所以我的目标是,我一次只能选择并移动50个针脚,但这比用手一个一个地挑选它们要好得多!
function checkAll() {
console.log("Checkboxes count: " + checkBoxes.length);
$.each(checkBoxes, function(i, v) {
console.log("Checkbox #: " + i)// + " = " + v);
$(this).trigger('click');
});
}
var checkBoxes = $("div > div > div.bulkEditPinWrapper > button");
var checkBoxes = checkBoxes.slice(1, 51);
checkAll();
Run Code Online (Sandbox Code Playgroud)
我正在开发一个Pinterest接口(?)脚本(?)有些麻烦.我是一名程序员,大多是自学成才,我想我可能缺少一些关于AJAX理解的关键部分?这是我第二次尝试编写一个jQuery脚本来与Pinterest进行交互.第一个尝试打败无限滚动功能(AKA"加载更多"按钮),以便将所有图像显示在一个页面上,我可以从中抓取图像链接,然后使用浏览器插件下载它们以备份我的Pinterest登上我的电脑.我的代码全部工作,除了它实际上没有下载任何图像.
失望,我把它暂时放在了其他的东西上.最后,我重新访问了我的代码并进行了一些挖掘,它应该有效.我的研究表明,可能阻止我的程序做我想做的关键FLAW就是"Pinterest使用AJAX".虽然我知道"使用XML的异步JavaScript"和"XMLHttpRequest"这两个术语,但我在实施AJAX方面并不是一个专家.
使用我的最新代码,我写了一个 - 你会认为它会是 - 快速的小jQuery脚本来选择所有图像,以便我可以移动它们,删除,复制等...问题是,虽然检查所有的框工作(你必须在一个板子,然后点击"移动"),当我第二次点击"移动"按钮时,应该弹出一个模态让我们选择要移动到哪个板,我得到的只是
Oops!
Select the Pins …Run Code Online (Sandbox Code Playgroud) 我现在正在阅读(第二次)"黑客攻击的艺术",并且偶然发现了一些事情.
本书提出了两种不同的方法来利用这两个类似的程序:auth_overflow和auth_overflow2
在第一个中,有一个像这样的密码检查功能
int check_authentication(char *password) {
int auth_flag = 0;
char password_buffer[16];
strcpy(password_buffer, password);
...
}
Run Code Online (Sandbox Code Playgroud)
输入超过16个ASCII字符会将auth_flag的值更改为大于0的值,从而绕过检查,如此gdb输出所示:
gdb$ x/12x $esp
0xbffff400: 0xffffffff 0x0000002f 0xb7e0fd24 0x41414141
0xbffff410: 0x41414141 0x41414141 0x41414141 0x00000001
0xbffff420: 0x00000002 0xbffff4f4 0xbffff448 0x08048556
password_buffer @ 0xbffff40c
auth_flag @ 0xbffff41c
Run Code Online (Sandbox Code Playgroud)
第二个程序反转了两个变量:
int check_authentication(char *password) {
char password_buffer[16];
int auth_flag = 0;
strcpy(password_buffer, password);
...
}
Run Code Online (Sandbox Code Playgroud)
然后作者建议,不可能溢出到auth_flag,我真的相信.然后我继续溢出缓冲区,令我惊讶的是,它仍然有效.auth_flag变量仍然位于缓冲区之后,正如您在此gdb输出中看到的那样:
gdb$ x/12x $esp
0xbffff400: 0xffffffff 0x0000002f 0xb7e0fd24 0x41414141
0xbffff410: 0x41414141 0x41414141 0x41414141 0x00000001
0xbffff420: 0x00000002 0xbffff4f4 0xbffff448 0x08048556
password_buffer …Run Code Online (Sandbox Code Playgroud) 我正在写一个flash应用程序,我担心它会被反编译.为了尽量减少这种机会,我想混淆文件.
我听说过secureSWF(http://www.kindisoft.com/),他们确实列出了一些"用户评论".然而,这些都是如此乐观,以至于难以信任.没有一个悲观的评论(甚至不是例如用户界面或支持),所以有些东西告诉我他们可能不会发布所有评论.根据我的经验,即使是最好的公司也时不时会有某种批评.
那么,这里的任何逆向工程师都可以告诉我你在工作中的经验是多少 - 以及你是否设法对secureSWF混淆文件进行逆向工程?如果是这样,你需要多长时间?你会推荐这个软件吗?
非常感谢提前.
我知道有很多关于方法调配的资源.但是,是否可以从私有API中调用方法?问题是没有头文件.我想在PrivateFramework中调用私有类中的方法,例如(随机示例)Message.framework方法
这是个人测试,我知道它会被Apple拒绝遗忘.