标签: reverse-engineering

反转CRC32

我正在寻找一种方法来反转CRC32校验和.有解决方案,但它们要么写得很糟糕,要么非常技术性和/或在装配中.汇编(目前)超出了我的范围,所以我希望有人可以用更高级别的语言拼凑一个实现.Ruby是理想的,但我可以解析PHP,Python,C,Java等.

任何接受者?

algorithm crc32 reverse reverse-engineering crc

9
推荐指数
2
解决办法
3万
查看次数

是否可以从JavaDoc创建Java类?

问题出在这里:目前我的团队为供应商工作,他们从他们的库中提供了一个巨大的JavaDoc规范,但没有为.jar文件提供存根或实现.

我们已经与他们交谈,但他们将在2到3周内提供.jar文件.我不想等待这个时间来开始我们的开发,所以这里的问题是:

仅提供JavaDoc .html文件,是否有任何工具(免费/开源)可用,因此我们可以创建一个.jar(或一堆.java/.class文件),使我们能够编译我们的代码?

java javadoc jar reverse-engineering

9
推荐指数
1
解决办法
1338
查看次数

如何让'android unlocker'应用程序更安全地对抗破解者?

对于我的应用程序的付费版本,我选择了解锁程序应用程序路由,因为它易于实现,允许开发人员控制台中的各个统计信息,但主要是因为我不需要维护2个代码库(一个用于免费版本和另一个付费版本).即使我使用CVS(我这样做),仍然需要保持合并功能和错误修复.解锁器应用程序更容易实现整体...

但这有一个严重的缺点,它很容易超出安全检查; 除非我在这里遗漏了什么.

无论我做什么,这样的实现总会导致一个简单的if,像这样:

if(Program.isPremiumVersion()) {
    // Remove ads...
}
Run Code Online (Sandbox Code Playgroud)

isPremiumVersion()方法负责检查付费解锁器应用程序安装的所有工作,如果证书匹配和所有这些东西.是的,解锁器应用程序受LVL保护(虽然我已经阅读了一些提到LVL不安全的文章,但现在不是重点).但最终,无论内部代码有多复杂isPremiumVersion(),它总会导致返回一个truefalse值.

覆盖这样的安全功能只需要对代码进行逆向工程并使其始终返回true.不是吗?我们如何保护我们的Android应用免受此攻击?是的,代码使用ProGuard进行混淆.不过,对于足够熟练的人来说,不应该太难.

请注意,我不是在试图打击破解者,我们根本无法获胜.我不会为此而失眠,在"完美解决方案"上浪费了无数个小时.我只是在寻找一种让它更安全的方法.至少在理论上,这似乎很容易破解.我错了吗?

有什么想法可以提高这种功能的安全性吗?

security android cracking reverse-engineering

9
推荐指数
2
解决办法
1982
查看次数

无法解密这些字符串

前言

我正在尝试对作者早已不复存在的程序进行反汇编和反向工程.该程序提供了一些我在其他地方尚未找到的独特功能......我对程序的逆向工程感到好奇和好奇.如果你要尝试帮助我找到另一个程序......不要打扰.

问题

我使用的是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悬停类型信息,这是我如何理解这一点:

  • runtimeVersion是一个const wchar
  • 这意味着它具有Unicode字符(UTF-16)
  • 字符串嵌入在内存中,但在这种情况下,弱加密(XOR?)

除了每个字符串的常量"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)

c# c++ reverse-engineering ida

9
推荐指数
1
解决办法
567
查看次数

如何在Android上捕获应用流量

我正试图从Android手机上的应用程序捕获流量,虽然我已经在手机上设置代理并且可以捕获来自手机的所有其他互联网流量(使用Charles Proxy),但是我看不到任何流量这个应用程序.

这是如何完成的,如何捕获流量?

更新:

proxy android reverse-engineering

9
推荐指数
1
解决办法
2万
查看次数

在一个字节中编码计数器的可能方法有哪些?

我正在逆向工程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)

algorithm reverse-engineering binary-data

9
推荐指数
1
解决办法
77
查看次数

选择Pinterest上的所有图像以移动到另一个板

更新:(2015-10-16)[已解决!] - 使用trigger()和限制为50个引脚(使用slice())进行修复.

非常感谢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)

javascript ajax jquery reverse-engineering pinterest

9
推荐指数
1
解决办法
778
查看次数

gcc是否在编译时重新排序局部变量?

我现在正在阅读(第二次)"黑客攻击的艺术",并且偶然发现了一些事情.

本书提出了两种不同的方法来利用这两个类似的程序:auth_overflowauth_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)

c gcc gdb reverse-engineering buffer-overflow

9
推荐指数
1
解决办法
464
查看次数

任何逆向工程师都有使用secureSWF的经验吗?

我正在写一个flash应用程序,我担心它会被反编译.为了尽量减少这种机会,我想混淆文件.

我听说过secureSWF(http://www.kindisoft.com/),他们确实列出了一些"用户评论".然而,这些都是如此乐观,以至于难以信任.没有一个悲观的评论(甚至不是例如用户界面或支持),所以有些东西告诉我他们可能不会发布所有评论.根据我的经验,即使是最好的公司也时不时会有某种批评.

那么,这里的任何逆向工程师都可以告诉我你在工作中的经验是多少 - 以及你是否设法对secureSWF混淆文件进行逆向工程?如果是这样,你需要多长时间?你会推荐这个软件吗?

非常感谢提前.

flash obfuscation reverse-engineering actionscript-3

8
推荐指数
3
解决办法
6798
查看次数

方法调整私有框架iOS API

我知道有很多关于方法调配的资源.但是,是否可以从私有API中调用方法?问题是没有头文件.我想在PrivateFramework中调用私有类中的方法,例如(随机示例)Message.framework方法

这是个人测试,我知道它会被Apple拒绝遗忘.

reverse-engineering objective-c iphone-privateapi ios

8
推荐指数
1
解决办法
2500
查看次数